2010-08-17 4 views
71

Comment faire? Par exemple, si ma colonne est "chats, chiens, oiseaux" et que je veux obtenir des lignes où la colonne contient des chats?La chaîne SQLite contient une autre requête de chaîne

+3

éditez votre question avec un ensemble de données d'échantillons. Il est difficile de déterminer exactement ce que vous demandez. –

Répondre

140

utilisant LIKE:

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

Gardez à l'esprit que cela ne convient pas lorsque la chaîne que vous recherchez est variable ou contient un caractère spécial tel que '%'. – Sam

+4

Si "cats" est un champ d'une autre table, vous pouvez utiliser ''%' || table2.field || '%'' comme critère similaire –

53

Alors que LIKE convient à ce cas, une solution de but plus général est d'utiliser instr, qui ne nécessite pas de caractères dans la chaîne de recherche à échapper. Note: instr is available starting from Sqlite 3.7.15.

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

De plus, gardez à l'esprit que LIKE est insensible à la casse , alors que instr est crémerie- sensible.

+7

Ce qui signifie que votre minSdkVersion doit être 21 (5.0-Lollipop) –

Questions connexes