我在MySQL以下查詢:MySQL WHERE`character` ='a'匹配a,A,Ã等。爲什麼?
SELECT id FROM unicode WHERE `character` = 'a'
表unicode
包含每個Unicode字符的ID(它的整數編碼值)沿。由於表的排序規則設置爲utf8_unicode_ci,因此我預計上述查詢只返回97(字母'a')。相反,它返回一個包含了許多「A'封樣的ID 119行:
A A A ...
這似乎是忽略大小寫和字符的多字節性質。
任何想法?
出於好奇,你不能使用['ORD()'](http://dev.mysql.com/doc/en/string-functions.html#function_ord)而不是維護這張表嗎?例如,'SELECT ORD('a');' – eggyal
呃,實際上我在數據庫中存儲的不僅僅是Unicode點,但是我把它留在了這裏來簡化問題。此外,'ORD'不是Unicode兼容的,儘管我找到了一個好的選擇:http://stackoverflow.com/questions/11304582/searching-for-a-good-unicode-compatible-alternative-to-the-php- ORD-功能。 –
啊,nevemind - 我的想法是在PHP的土地上。我不確定MySQL'ORD'是否兼容Unicode ... –