據我知道像運營商應不區分大小寫,但如果我有字符串「ABC軟件」,我得到了下面的查詢:MySQL的:如何執行不區分大小寫的查詢
SELECT ...
FROM ...
WHERE ... LIKE 'AbC Softwa%'
我得到一個零行結果集(如果我大寫第二個字母,b,我會得到正確的結果)。爲什麼?以前我有* utf8_bin *作爲字符編碼,所以我切換到* latin_swedish_ci *,假設二進制匹配是所有錯誤的來源,但是我得到同樣的問題。
據我知道像運營商應不區分大小寫,但如果我有字符串「ABC軟件」,我得到了下面的查詢:MySQL的:如何執行不區分大小寫的查詢
SELECT ...
FROM ...
WHERE ... LIKE 'AbC Softwa%'
我得到一個零行結果集(如果我大寫第二個字母,b,我會得到正確的結果)。爲什麼?以前我有* utf8_bin *作爲字符編碼,所以我切換到* latin_swedish_ci *,假設二進制匹配是所有錯誤的來源,但是我得到同樣的問題。
默認情況下,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
是數據庫的名稱。
嘗試
SELECT ...
FROM ...
WHERE UPPER(...) LIKE 'ABC SOFTWA%'
不,我想執行不區分大小寫的匹配,但MySQL的默認情況下執行區分大小寫的。 – 2012-08-02 21:45:18