有没有办法在SQLITE中使用"IN"子句,它将敏感地将列与in子句中的所有元素匹配.我有一个问题
select * from Table
where table.column in ("aaa", "bbb")
Run Code Online (Sandbox Code Playgroud)
table.column具有"AAA"和"BBB",这导致没有选择行.理想情况下,解决方案应该具有与查询IN相同的结果
select * from Table
where table.column = "aaa" or table.column = "bbb"
collate NOCASE
Run Code Online (Sandbox Code Playgroud)
我被建议了一个解决方法,它有效,但不干净或令人满意
select * from Table
where upper(table.column) in (upper("aaa"), upper("bbb"))
Run Code Online (Sandbox Code Playgroud)
在我的"IN"查询中简单添加整理NOCASE并不能解决我的问题.
一种方法是:
select t.*
from Table t
where t.column collate NOCASE in ('aaa' collate NOCASE, 'bbb' collate NOCASE)
Run Code Online (Sandbox Code Playgroud)
但是,这实际上可以缩短为:
select t.*
from Table t
where t.column collate NOCASE in ('aaa', 'bbb')
Run Code Online (Sandbox Code Playgroud)
列的排序规则用于整个表达式.