Ric*_*ams 38 sqlite case-sensitive
在SQLite中,可以使用以下命令更改"LIKE"的区分大小写的行为:
PRAGMA case_sensitive_like=ON;
PRAGMA case_sensitive_like=OFF;
Run Code Online (Sandbox Code Playgroud)
但是在我的情况下,我想执行一个查询,其中一部分是区分大小写的,而其中一部分不是.例如:
SELECT * FROM mytable
WHERE caseSensitiveField like 'test%'
AND caseInsensitiveField like 'g2%'
Run Code Online (Sandbox Code Playgroud)
这可能吗?
rbe*_*ger 31
您可以在不区分大小写的字段中使用UPPER关键字,然后使用大写的like语句.例如
SELECT * FROM mytable
WHERE caseSensitiveField like 'test%'
AND UPPER(caseInsensitiveField) like 'G2%'
Run Code Online (Sandbox Code Playgroud)
在 SQLite 中,您可以使用GLOB
代替LIKE
进行模式搜索。例如:
SELECT * FROM mytable
WHERE caseSensitiveField GLOB 'test*'
AND caseInsensitiveField LIKE 'g2%'
Run Code Online (Sandbox Code Playgroud)
通过这种方法,您不必担心PRAGMA
。
使用普通比较,默认情况下区分大小写(除非您声明了 column COLLATE NOCASE
):
SELECT *
FROM mytable
WHERE caseSensitiveField >= 'test'
AND caseSensitiveField < 'tesu'
AND caseInsensitiveField LIKE 'g2%'
Run Code Online (Sandbox Code Playgroud)
LIKE
仅当原始数据正在搜索前缀时才有效,但允许使用索引。