2011-03-20 63 views
5

我有一個連接到MySQL數據庫的Rails 3應用程序。使用的編碼是utf-8。該數據庫連接瑞典的大量數據並具有搜索功能。MySQL LIKE語句將「o」和「ö」解釋爲相同

當我搜索gotland(瑞典小島)時,Östergötland(郡)的結果也會返回。顯然MySQL將ö解釋爲o

有沒有簡單的方法來確保location LIKE '%gotland%'不返回包含götland的字段?

乾杯。

回答

8

我相信在LIKE聲明後加上COLLATE utf8_swedish_ci,你會得到你想要的。

SELECT * FROM places WHERE name LIKE '%gotland%' COLLATE utf8_swedish_ci; 

或者,你可能想使用latin1_swedish_ci如果latin1是你的字符集。

我不是100%確定這可以修復LIKE語句中的字符比較,但它在邏輯上應該是這樣。

來源: