SQL 不区分大小写的 IN 搜索

标签 sql sql-like

我有这个表 "Table"内容:

+--------+
| Serial |
+--------+
| d100m  | <- expected result
| D100M  | <- expected result
| d200m  | <- expected result
| d300L  |
| D400R  |
+--------+

存储了大小写不准确的序列号。

目前我正在选择那里,声明如下
SELECT Serial FROM Table WHERE Serial LIKE 'D100M' OR Serial LIKE 'D200M';

但是没有比 OR Serial LIKE OR Serial LIKE OR Serial LIKE 更简单的方法了吗?我必须比较大约 30 个数字。

像这样的东西
SELECT Serial FROM Table WHERE Serial LIKE IN ('D100M', 'D200M')

最佳答案

最简单的方法是:

SELECT Serial 
FROM Table 
WHERE upper(Serial) in ('D100M', 'D200M');

然而,这不会使用 serial 上的索引。柱子。

因此,如果性能是一个问题,您需要在 upper(serial) 上创建索引。 .

关于SQL 不区分大小写的 IN 搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40782025/

相关文章:

php - 如何在sql中同时使用 '='和LIKE运算符来表示相同的条件

php - 如何从标签列表的标签栏中准确选择标签?

sql - 如何在 SQL where 子句中执行条件语句

php - 简单的PHP查询题: LIKE

javascript - 我可以在前端 Javascript 中运行 SQL 查询吗?

mysql - 如何从MYSQL中删除部分单词

java - 如何处理java枚举和数据库表之间的重复?

php - 具有可变大小变量列表的 MySQL 准备语句

mysql - 从文件或本地表获取 SQL QUERY 的 WHERE IN 过滤器的输入列表

sql - 如何在 Azure SQL 中使用 terraform 添加 azurerm_mssql_database 的只读副本