目前,我正在尝试使用以下SQL语句根据用户输入进行白名单/黑名单:
SELECT * FROM Customers WHERE City IN ('Paris','London');
SELECT * FROM Customers WHERE City NOT IN ('Paris','London');需要什么样的语法才能使巴黎和伦敦区分大小写,并与巴黎和伦敦相匹配?
谢谢。
发布于 2016-03-03 14:55:28
只需在db字段上定义适当的排序规则,索引也会工作得很好。
http://dev.mysql.com/doc/refman/5.7/en/case-sensitivity.html
正如您在latin1_bin 'MySQL' <> 'mysql'中看到的那样
mysql> SET @s1 = 'MySQL' COLLATE latin1_bin,
-> @s2 = 'mysql' COLLATE latin1_bin;
mysql> SELECT @s1 = @s2;
+-----------+
| @s1 = @s2 |
+-----------+
| 0 |
+-----------+但是对于latin1_swedish_ci来说是相等的
mysql> SELECT @s1 COLLATE latin1_swedish_ci = @s2;
+-------------------------------------+
| @s1 COLLATE latin1_swedish_ci = @s2 |
+-------------------------------------+
| 1 |
+-------------------------------------+发布于 2016-03-03 14:48:34
您可以这样做,但是如果您已经索引了希望优化查询的City,那么添加LOWER函数将终止优化:
SELECT * FROM Customers WHERE LOWER(City) IN ('paris', 'london');https://stackoverflow.com/questions/35775304
复制相似问题