La stringa SQLite contiene un'altra query di stringa


111

Come faccio a fare questo?

Ad esempio, se la mia colonna è "gatti, cani, uccelli" e desidero ottenere righe in cui la colonna contiene gatti?


3
modifica la tua domanda con una serie di dati di esempio. È difficile determinare esattamente cosa stai chiedendo.
p.campbell

Buon centesimo voto positivo.
vescovo

Risposte:


195

Utilizzando MI PIACE:

SELECT *
  FROM TABLE
 WHERE column LIKE '%cats%'  --case-insensitive

4
Tieni presente che questo non è adatto quando la stringa che stai cercando è variabile o contiene un carattere speciale come %.
Sam

10
se "gatti" è un campo di un'altra tabella, potresti usare '%'||table2.field||'%'come criteri simili
Stéphane Ch.

96

Sebbene LIKEsia adatto a questo caso, una soluzione più generale è quella di utilizzare instr, che non richiede che i caratteri nella stringa di ricerca siano sottoposti a escape. Nota: instrè disponibile a partire da Sqlite 3.7.15 .

SELECT *
  FROM TABLE  
 WHERE instr(column, 'cats') > 0;

Inoltre, tieni presente che non LIKEfa distinzione tra maiuscole e minuscole , mentre instrdistingue tra maiuscole e minuscole .


13
Il che significa che il tuo minSdkVersion dovrebbe essere 21 (5.0-Lollipop)
Maksim Turaev

1
@WilliamEntriken Nel mio test, instr(...)è un po 'più veloce (0.32s contro 0.34s). È possibile utilizzare .timer onin SQLite per misurare il tempo di esecuzione.
Arnie97
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.