在sqlite IN子句上收集NOCASE

Tri*_*ong 2 sql sqlite

有没有办法在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并不能解决我的问题.

Gor*_*off 8

一种方法是:

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)

列的排序规则用于整个表达式.