La cadena SQLite contiene otra consulta de cadena


111

¿Cómo hago esto?

Por ejemplo, si mi columna es "gatos, perros, pájaros" y quiero obtener filas en las que la columna contenga gatos.


3
edite su pregunta con un conjunto de datos de muestra. Es difícil determinar exactamente lo que está pidiendo.
p

Feliz 100a votación a favor.
obispo

Respuestas:


195

Usando LIKE:

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

4
Tenga en cuenta que esto no es adecuado cuando la cadena que está buscando es variable o contiene un carácter especial como %.
Sam

10
si "gatos" es un campo de otra tabla, puede utilizar '%'||table2.field||'%'como criterio similar
Stéphane Cap.

96

Si bien LIKEes adecuado para este caso, se usa una solución de propósito más general instr, que no requiere que se escapen los caracteres en la cadena de búsqueda. Nota: instrestá disponible a partir de Sqlite 3.7.15 .

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

Además, tenga en cuenta que LIKEdistingue entre mayúsculas y minúsculas , mientras que instrdistingue entre mayúsculas y sensible .


13
Lo que significa que su minSdkVersion debería ser 21 (5.0-Lollipop)
Maksim Turaev

1
@WilliamEntriken En mi propia prueba, instr(...)es un poco más rápido (0.32s vs 0.34s). Puede usar .timer onen SQLite para medir el tiempo de ejecución.
Arnie97
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.