2012-06-19 52 views
1

我的表排序規則是utf8_general_ci,字符集是utf8。如果我運行如下的查詢,它不會顯示任何值。如何處理MySQL`WHERE`子句中的元音變音?

SELECT * FROM mytable WHERE myfield = "Björn Borg" 
OR myfield = "FrüFrü & Tigerlily"; 

那麼我如何從表中獲取值呢?

+1

你真的在運行包含分號的查詢嗎? –

+1

@ Jan Zyka:是的,我正在使用分號運行查詢 –

+0

驚人的蜘蛛俠... :) http://dev.mysql.com/doc/refman/5.0/en/entering-queries.html(你不要' t以這種方式使用分號) – ajreal

回答

1

問題可能發生在您的連接字符集中。嘗試運行

SET NAMES 'utf8' 

然後您的查詢。

+0

@Ashish您使用哪些工具/腳本來瀏覽結果集? –

+0

我正在使用SQMyog v-9.60 –

+0

@Ashish您的表是否已創建爲utf8/utf8_general_ci,或者您是否已將其轉換爲其他編碼的utf8? –

0

MySQL定義字符集的地方更多,包括列級。

檢查數據庫設置: SHOW VARIABLES LIKE'char%'; SHOW VARIABLES LIKE'collat​​ion%';

檢查表設置:SHOW CREATE TABLE tablename;

要檢查單個列:在tablename中顯示完整列;

如果你使用錯誤的編碼創建了一個數據庫,你將不得不改變在所有這些錯誤字符集中出現的每一個錯誤。

+0

我得到的解決方案是使用SET NAMES'utf8',但它只適用於myfield =「FrüFrü&Tigerlily」,但它不適用於myfield =「BjörnBorg」,所以我必須爲此做什麼以及如何我可以在我的存儲過程中使用它嗎? –