【问题标题】:SQLite string contains other string querySQLite 字符串包含其他字符串查询
【发布时间】:2011-03-30 18:08:32
【问题描述】:

我该怎么做?

例如,如果我的列是“cats,dogs,birds”并且我想获取列包含猫的任何行?

【问题讨论】:

  • 使用一组样本数据编辑您的问题。很难确切地确定您要的是什么。
  • 似乎您也可以使用 CONTAINS 命令,但它的实现似乎没有标准化,我无法使用 SQLite 让它工作;但是,在 [Oracle][1] 和 [Microsoft][2] 有它的文档,并且根据另一个 [thread][3] 它应该更快,但是您可能需要使用另一种类型的 SQL 而不是 SQLite跨度>

标签: sql sqlite


【解决方案1】:

使用喜欢:

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

【讨论】:

  • 请记住,这不适用于您要搜索的字符串是可变的或包含特殊字符(例如 %)的情况。
  • 如果“cats”是其他表中的字段,您可以使用'%'||table2.field||'%'作为类似条件
【解决方案2】:

虽然LIKE 适用于这种情况,但更通用的解决方案是使用instr,它不需要对搜索字符串中的字符进行转义。注:instr is available starting from Sqlite 3.7.15.

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

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

【讨论】:

  • 这意味着你的 minSdkVersion 应该是 21 (5.0-Lollipop)
  • @WilliamEntriken 在我自己的测试中,instr(...) 稍微快一点(0.32s vs 0.34s)。您可以在 SQLite 中使用.timer on 来测量执行时间。
猜你喜欢
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 2019-01-04
  • 1970-01-01
  • 2011-02-05
  • 2020-02-14
  • 2013-09-09
相关资源
最近更新 更多