String SQLite contém outra consulta de string


111

Como eu faço isso?

Por exemplo, se minha coluna for "gatos, cachorros, pássaros" e eu quiser obter alguma linha em que a coluna contenha gatos?


3
edite sua pergunta com um conjunto de dados de amostra. É difícil determinar exatamente o que você está pedindo.
p.campbell

Feliz 100º voto positivo.
bispo

Respostas:


195

Usando LIKE:

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

4
Lembre-se de que isso não é adequado quando a string que você está procurando é variável ou contém um caractere especial como %.
Sam

10
se "gatos" é um campo de outra tabela, você pode usar '%'||table2.field||'%'como o mesmo critério
Stéphane Ch.

96

Embora LIKEseja adequado para este caso, uma solução de propósito mais geral é usar instr, o que não requer que caracteres na string de pesquisa sejam escapados. Nota: instrestá disponível a partir do Sqlite 3.7.15 .

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

Além disso, mantenha em mente que LIKEé caso- insensível , enquanto que instrdiferencia maiúsculas de minúsculas .


13
O que significa que sua minSdkVersion deve ser 21 (5.0-Lollipop)
Maksim Turaev

1
@WilliamEntriken Em meu próprio teste, instr(...)é um pouco mais rápido (0,32s vs 0,34s). Você pode usar .timer onno SQLite para medir o tempo de execução.
Arnie97
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.