2012-08-02 109 views
0

據我知道像運營商應不區分大小寫,但如果我有字符串「ABC軟件」,我得到了下面的查詢:MySQL的:如何執行不區分大小寫的查詢

SELECT ... 
FROM ... 
WHERE ... LIKE 'AbC Softwa%' 

我得到一個零行結果集(如果我大寫第二個字母,b,我會得到正確的結果)。爲什麼?以前我有* utf8_bin *作爲字符編碼,所以我切換到* latin_swedish_ci *,假設二進制匹配是所有錯誤的來源,但是我得到同樣的問題。

回答

0

默認情況下,MySQL不區分大小寫。

如果要執行區分敏感搜索使用:

SELECT ... 
FROM ... 
WHERE ... LIKE BINARY 'AbC Softwa%' 

如果你的數據庫或表被配置爲區分大小寫默認情況下,再進行區分大小寫搜索,你需要做的是這樣的:

SELECT ... 
FROM ... 
WHERE ... COLLATE latin1_swedish_ci LIKE 'AbC Softwa%' COLLATE latin1_swedish_ci 

如果使用的是UTF8,那麼試試這個:

SELECT ... 
FROM ... 
WHERE ... COLLATE utf8_general_ci LIKE 'AbC Softwa%' COLLATE utf8_general_ci 

您可能想調查數據庫爲何區分大小寫。

要查看服務器的配置,運行:

SHOW VARIABLES LIKE '%collation%'; 

要查看錶的整理,運行:

SHOW TABLE STATUS; 

而且看到默認的排序規則數據庫:

SHOW CREATE DATABASE dbname; 

其中dbname是數據庫的名稱。

+0

不,我想執行不區分大小寫的匹配,但MySQL的默認情況下執行區分大小寫的。 – 2012-08-02 21:45:18

1

嘗試

SELECT ... 
FROM ... 
WHERE UPPER(...) LIKE 'ABC SOFTWA%'