sql - SQLite IN 子句上的 COLLATE NOCASE

标签 sql sqlite

有没有办法在 SQLITE 中使用“IN”子句,该子句将敏感地将列与 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”查询中添加 collat​​e NOCASE 并不能解决我的问题。

最佳答案

一种方法是:

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')

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

关于sql - SQLite IN 子句上的 COLLATE NOCASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42035356/

相关文章:

java - 如何在 android 中的 play 商店上传我的应用程序的新版本之前测试升级 sqlite 数据库

python - 写入 SQL 数据库时发生 I/O 错误

android - 如何打开系统SQLiteDatabase

sqlite - Sequelize autoIncrement 和 SQLite

sql - 哪个更快,在插入之前或之后存在?

sql - SQLite表达式可对按周分组的行进行计数

sql - 在SQL中比较图像数据类型

mysql - 优化 : WHERE x IN (1, 2 .., 100.000) 与 INNER JOIN tmp_table USING(x)?

sql - 如何在 PostgreSQL 8.2 中动态使用 TG_TABLE_NAME?

java - 这两个sql语句(JDBC)有什么区别?