2016-03-03 18 views
0

目前我正在試圖到白名單基於用戶輸入與下面的SQL語句/黑名單:在MySQL聲明,其中值是不區分大小寫

SELECT * FROM Customers WHERE City IN ('Paris','London'); 
SELECT * FROM Customers WHERE City NOT IN ('Paris','London'); 

需要什麼樣的語法,使得巴黎和倫敦不區分大小寫,匹配巴黎和倫敦?

謝謝。

+1

檢查排序規則是不區分大小寫http://dev.mysql.com/doc看/refman/5.7/en/case-sensitivity.html –

回答

3

只要定義你的數據庫字段和索引將在適當的歸類工作也很好。

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 | 
+-------------------------------------+ 
2

你可以做到這一點,但如果你已經索引City希望優化查詢,添加LOWER功能將殺死優化:

SELECT * FROM Customers WHERE LOWER(City) IN ('paris', 'london'); 
+0

陷阱。不幸的。非常感謝回覆! – DeeVu