MYSQL IN语句,其中值不区分大小写
我目前正在尝试使用以下SQL语句根据用户输入建立白名单/黑名单:MYSQL IN语句,其中值不区分大小写,mysql,Mysql,我目前正在尝试使用以下SQL语句根据用户输入建立白名单/黑名单: SELECT * FROM Customers WHERE City IN ('Paris','London'); SELECT * FROM Customers WHERE City NOT IN ('Paris','London'); 需要什么语法才能使Paris和London不区分大小写并匹配Paris和London 谢谢。您可以这样做,但是如果您为城市编制了索引,希望优化查询,则添加降低功能将终止优化: SELECT *
SELECT * FROM Customers WHERE City IN ('Paris','London');
SELECT * FROM Customers WHERE City NOT IN ('Paris','London');
需要什么语法才能使Paris和London不区分大小写并匹配Paris和London
谢谢。您可以这样做,但是如果您为城市编制了索引,希望优化查询,则添加
降低功能将终止优化:
SELECT * FROM Customers WHERE LOWER(City) IN ('paris', 'london');
您可以这样做,但如果您已为城市编制了索引,希望优化查询,则添加LOWER
函数将终止优化:
SELECT * FROM Customers WHERE LOWER(City) IN ('paris', 'london');
只要在数据库字段和索引上定义适当的排序规则,也可以正常工作
正如您可以通过latin1\u-bin
'MySQL''看到的那样
mysql> SET @s1 = 'MySQL' COLLATE latin1_bin,
-> @s2 = 'mysql' COLLATE latin1_bin;
mysql> SELECT @s1 = @s2;
+-----------+
| @s1 = @s2 |
+-----------+
| 0 |
+-----------+
但与拉丁语和瑞典语相比
是平等的
mysql> SELECT @s1 COLLATE latin1_swedish_ci = @s2;
+-------------------------------------+
| @s1 COLLATE latin1_swedish_ci = @s2 |
+-------------------------------------+
| 1 |
+-------------------------------------+
只要在数据库字段和索引上定义适当的排序规则,也可以正常工作
正如您可以通过latin1\u-bin
'MySQL''看到的那样
mysql> SET @s1 = 'MySQL' COLLATE latin1_bin,
-> @s2 = 'mysql' COLLATE latin1_bin;
mysql> SELECT @s1 = @s2;
+-----------+
| @s1 = @s2 |
+-----------+
| 0 |
+-----------+
但与拉丁语和瑞典语相比
是平等的
mysql> SELECT @s1 COLLATE latin1_swedish_ci = @s2;
+-------------------------------------+
| @s1 COLLATE latin1_swedish_ci = @s2 |
+-------------------------------------+
| 1 |
+-------------------------------------+
明白了。不幸。非常感谢您的回复!明白了。不幸。非常感谢您的回复!检查排序规则是否不区分大小写检查排序规则是否不区分大小写