SQLite字符串包含其他字符串查询


111

我该怎么做呢?

例如,如果我的栏是“猫,狗,鸟”,并且我想获得其中包含猫的任何行?


3
使用一组样本数据来编辑您的问题。很难确切地确定您的要求。
p.campbell 2010年

第100次投票愉快。
主教

Answers:


195

使用LIKE:

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

4
请记住,这不适用于您要搜索的字符串是可变的或包含特殊字符(例如)的地方%
山姆

10
如果“猫”是一个字段从其他表,你可以使用'%'||table2.field||'%'的类似标准
斯特凡章。

96

虽然LIKE适合这种情况,但更通用的解决方案是使用instr,它不需要转义搜索字符串中的字符。注意:instr从Sqlite 3.7.15开始可用

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

另外,请记住,LIKE是区分大小写的,而instr是区分大小写


13
这意味着您的minSdkVersion应该为21(5.0棒棒糖)
Maksim Turaev

1
@WilliamEntriken在我自己的测试中,instr(...)速度要快一些(0.32s和0.34s)。您可以.timer on在SQLite 中使用以测量执行时间。
Arnie97 7:58
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.