我的表排序規則是utf8_general_ci
,字符集是utf8
。如果我運行如下的查詢,它不會顯示任何值。如何處理MySQL`WHERE`子句中的元音變音?
SELECT * FROM mytable WHERE myfield = "Björn Borg"
OR myfield = "FrüFrü & Tigerlily";
那麼我如何從表中獲取值呢?
我的表排序規則是utf8_general_ci
,字符集是utf8
。如果我運行如下的查詢,它不會顯示任何值。如何處理MySQL`WHERE`子句中的元音變音?
SELECT * FROM mytable WHERE myfield = "Björn Borg"
OR myfield = "FrüFrü & Tigerlily";
那麼我如何從表中獲取值呢?
問題可能發生在您的連接字符集中。嘗試運行
SET NAMES 'utf8'
然後您的查詢。
@Ashish您使用哪些工具/腳本來瀏覽結果集? –
我正在使用SQMyog v-9.60 –
@Ashish您的表是否已創建爲utf8/utf8_general_ci,或者您是否已將其轉換爲其他編碼的utf8? –
MySQL定義字符集的地方更多,包括列級。
檢查數據庫設置: SHOW VARIABLES LIKE'char%'; SHOW VARIABLES LIKE'collation%';
檢查表設置:SHOW CREATE TABLE tablename;
要檢查單個列:在tablename中顯示完整列;
如果你使用錯誤的編碼創建了一個數據庫,你將不得不改變在所有這些錯誤字符集中出現的每一個錯誤。
我得到的解決方案是使用SET NAMES'utf8',但它只適用於myfield =「FrüFrü&Tigerlily」,但它不適用於myfield =「BjörnBorg」,所以我必須爲此做什麼以及如何我可以在我的存儲過程中使用它嗎? –
你真的在運行包含分號的查詢嗎? –
@ Jan Zyka:是的,我正在使用分號運行查詢 –
驚人的蜘蛛俠... :) http://dev.mysql.com/doc/refman/5.0/en/entering-queries.html(你不要' t以這種方式使用分號) – ajreal