在sqlite IN子句

时间:2017-02-04 01:00:25

标签: sql sqlite

有没有办法使用" IN" SQLITE中的子句将敏感地将列与in子句中的所有元素匹配。我有一个查询

select * from Table
where table.column in ("aaa", "bbb")

table.column有" AAA"和" BBB",这导致没有选择行。理想情况下,解决方案应该具有相同的结果,因为查询IN是

的简写
select * from Table
where table.column = "aaa" or table.column = "bbb"
collate NOCASE

我被建议了一种解决方法,但有效但不干净或令人满意

select * from Table
where upper(table.column) in (upper("aaa"), upper("bbb"))

在我的" IN"上简单添加整理NOCASE查询无法解决我的问题。

1 个答案:

答案 0 :(得分:7)

一种方法是:

select t.*
from Table t
where t.column collate NOCASE in ('aaa' collate NOCASE, 'bbb' collate NOCASE)

然而,这实际上可以缩短为:

select t.*
from Table t
where t.column collate NOCASE in ('aaa', 'bbb')

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