2013-07-26 22 views
11

Sto tentando di eseguire una query: Perché SQLite dice che instr non esiste?

 
SELECT name 
FROM Foo 
WHERE instr(name, '@') = 0 AND instr(name, '.') != 0 

Ma sto ricevendo l'errore: "nessuna di tali funzioni: instr". Questo mi confonde perché the website clearly states che la funzione esiste. Qualcuno sa cosa sta succedendo?

P.S. Ho anche provato la query in SQLiteSpy che dà lo stesso errore.

+2

Questo è stato [aggiunto 3.7.15] (http://www.sqlite.org/changes.html) (pubblicato a dicembre) - Che versione stai correndo? –

+0

@MikeChristensen ah ah! Sto usando 3.7.14.1. Grazie! – chacham15

+0

Ooo così vicino! :) –

risposta

17

Secondo il Change History, la funzione instr è stato aggiunto nella versione 3.7.15:

2012-12-12 (3.7.15)

Added the instr() SQL function.

assicurarsi che si sta eseguendo l'ultima release.

Se l'aggiornamento non è un'opzione, è anche possibile utilizzare il LIKE dell'operatore:

SELECT name 
FROM Foo 
WHERE name NOT LIKE '%@%' -- name does NOT contain @ 
AND name LIKE '%.%';  -- name DOES contain . 
+3

instr (x, y) restituisce la posizione in x della stringa di y. LIKE restituisce vero o falso. Neanche lontanamente equivalente per tutti gli usi. – fyngyrz

+1

Non volevo insinuare che fossero equivalenti, solo che è una soluzione per il caso d'uso descritto nel post originale. –

Problemi correlati