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

Jor*_*ren 100 sql sqlite

我该怎么做呢?

例如,如果我的专栏是"猫,狗,鸟",我想获得列包含猫的任何行?

OMG*_*ies 179

使用LIKE:

SELECT *
  FROM TABLE
 WHERE column LIKE '%cats%'  --case-insensitive
Run Code Online (Sandbox Code Playgroud)

  • 如果"cats"是来自其他表的字段,您可以使用''%'|| table2.field ||'%'作为类似标准 (5认同)
  • 请记住,这不适用于您要搜索的字符串是可变的或包含特殊字符(如`%`)的情况. (4认同)

Sam*_*Sam 83

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

SELECT *
  FROM TABLE  
 WHERE instr(column, 'cats') > 0;
Run Code Online (Sandbox Code Playgroud)

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

  • 这意味着你的minSdkVersion应该是21(5.0-Lollipop) (12认同)
  • 是否像使用LIKE一样将instr(...)> 0用作性能? (2认同)
  • @WilliamEntriken 在我自己的测试中,`instr(...)` 稍微快一点(0.32s vs 0.34s)。您可以在 SQLite 中使用 `.timer on` 来测量执行时间。 (2认同)