SQLite中的不区分大小写

5

我需要在SQLite中选择一些不区分大小写的字符串。例如:

COLLATE NOCASE可用于"=",例如:

SELECT id,name from trait WHERE name = "ratio" COLLATE NOCASE

但是它不适用于“in”,例如:
SELECT id,name from trait WHERE name in ("ratio") COLLATE NOCASE

我需要使用"in"来选择多个值,例如:
SELECT id,name from trait WHERE name in ("ratio", 'number') COLLATE NOCASE 

我应该如何修改我的SQL脚本呢?感谢任何建议。
2个回答

10

COLLATE NOCASE 必须直接出现在它所修改的表达式之后。

当您编写 name in ("ratio", 'number') COLLATE NOCASE 时,排序规则应用于比较的结果,该结果只是一个数字0或1;排序规则在此处无效。

IN运算符使用其左侧表达式的排序规则,因此必须在此处应用排序规则:

... WHERE name COLLATE NOCASE IN ('ratio', 'number')

3
如何?
SELECT id,name 
FROM trait 
WHERE UPPER(name) IN ("RATIO")

没问题。很高兴能帮忙。 - DNac

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接