我試圖在MySQL中實現重音和不區分大小寫的排序。按照手冊中的說明,應該使用utf8字符集和utf8_general_ci歸類。MySQL中對口音不敏感的排序
當我跟隨在手動(http://dev.mysql.com/doc/refman/5.1/en/charset-collation-implementations.html)在例子中「排序規則對Unicode的多字節字符集」我沒有得到相同的結果:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 679877
Server version: 5.1.41-log MySQL Community Server (GPL) by Remi
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SET NAMES 'utf8' COLLATE 'utf8_general_ci';
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT 'a' = 'A', 'a' = 'À', 'a' = 'á';
+-----------+-----------+-----------+
| 'a' = 'A' | 'a' = 'À' | 'a' = 'á' |
+-----------+-----------+-----------+
| 1 | 0 | 0 |
+-----------+-----------+-----------+
1 row in set (0.00 sec)
mysql>
在這個例子中的手冊中,這些都是全部1.
當我嘗試直接在查詢中設置排序規則時,它也無法平等地對待重音字符。在這個例子中,表格使用了latin1,我正在轉換爲utf8。
mysql> select * from test;
+----------+
| k |
+----------+
| Cárdenas |
| Cardozo |
| Corbin |
| Cabrero |
+----------+
mysql> select k from test order by convert(k using utf8) collate utf8_general_ci
;
+----------+
| k |
+----------+
| Cabrero |
| Cardozo |
| Corbin |
| Cárdenas |
+----------+
4 rows in set (0.00 sec)
它應該忽略最後一個條目中'a'的重音並將其排序。任何想法我做錯了什麼?
請你從'SHOW FULL列添加到您的問題的輸出從測試;' – 2010-03-05 19:27:38
我得到了所有1選擇,所以在MySQL中你的排序規則肯定有問題。 –
控制檯在哪裏輸入所有配置爲處理UTF-8鍵盤輸入的測試? –