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 转义通配符的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server中LIKE和PATINDEX的用法

T-SQL 转义select …. like中的特殊字符(百分号)

MySQL 学习三 关于转义

MyBatis Like查询处理%_符号

sybase数据库的“like”用法是啥?

oracle 插入所有通配符 转义字符 特殊符号