2010-08-17 38 views
71

¿Cómo hago esto?La cadena de SQLite contiene otra cadena de consulta

Por ejemplo, si mi columna es "gatos, perros, pájaros" y quiero obtener las filas donde la columna contiene gatos?

+3

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

Respuesta

140

utilizando como:

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

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

+4

si "gatos" es un campo de otra tabla, puede usar ''%' || table2.field || '%'' como los criterios similares –

53

Mientras LIKE es adecuado para este caso, una solución objetivo más general es utilizar instr, que no requiere de caracteres en la cadena de búsqueda para ser escapado. Nota: instr is available starting from Sqlite 3.7.15.

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

Además, tenga en cuenta que LIKE distingue entre mayúsculas y minúsculas , mientras que instr distingue entre mayúsculas y sensibles.

+7

Lo que significa que su minSdkVersion debe ser 21 (5.0-Lollipop) –

Cuestiones relacionadas