目前我正在試圖到白名單基於用戶輸入與下面的SQL語句/黑名單:在MySQL聲明,其中值是不區分大小寫
SELECT * FROM Customers WHERE City IN ('Paris','London');
SELECT * FROM Customers WHERE City NOT IN ('Paris','London');
需要什麼樣的語法,使得巴黎和倫敦不區分大小寫,匹配巴黎和倫敦?
謝謝。
目前我正在試圖到白名單基於用戶輸入與下面的SQL語句/黑名單:在MySQL聲明,其中值是不區分大小寫
SELECT * FROM Customers WHERE City IN ('Paris','London');
SELECT * FROM Customers WHERE City NOT IN ('Paris','London');
需要什麼樣的語法,使得巴黎和倫敦不區分大小寫,匹配巴黎和倫敦?
謝謝。
只要定義你的數據庫字段和索引將在適當的歸類工作也很好。
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 |
+-------------------------------------+
你可以做到這一點,但如果你已經索引City
希望優化查詢,添加LOWER
功能將殺死優化:
SELECT * FROM Customers WHERE LOWER(City) IN ('paris', 'london');
陷阱。不幸的。非常感謝回覆! – DeeVu
檢查排序規則是不區分大小寫http://dev.mysql.com/doc看/refman/5.7/en/case-sensitivity.html –