Android SQLite LIKE 转义通配符
Posted
技术标签:
【中文标题】Android SQLite LIKE 转义通配符【英文标题】:Android SQLite LIKE escape wildcard 【发布时间】:2021-12-22 21:36:43 【问题描述】:在 android Jellybean 4.1 上是否可以转义 LIKE 通配符并仍然让 like 使用索引?
用途:
where field like 'xyz\_abc'
相对于:
where field like 'xyz_abc'
转义通配符是否适用于 Android?如果通配符被转义,它还会使用索引吗?
我目前正在做的是:
where field like 'xyz_abc' and lower(field) = lower('xyz_abc')
由于通配符,这非常低效。
谢谢
【问题讨论】:
***.com/questions/9076561/… 看看那里,它可能会对你有所帮助! 如果您不想将_
作为通配符,那么field like 'xyz_abc'
应该是field = 'xyz_abc'
。如果没有至少一个通配符,LIKE
就没有用处。
谢谢,但该列不区分大小写。源数据可以是任何情况,例如“Xyz_abc”或“xyz_Abc”,但在列中只会有一个较低的(“XyZ_AbC”)。我试图避免编写补丁版本来修改数据库以将所有内容转换为小写。
【参考方案1】:
您需要使用ESCAPE
子句:
where field like 'xyz\_abc' escape '\'
请参阅 SQLite 文档中的 The LIKE and GLOB operators 部分。
【讨论】:
以上是关于Android SQLite LIKE 转义通配符的主要内容,如果未能解决你的问题,请参考以下文章