我不認爲你想要的是直接可能的。 排序規則確定排序和比較日期的方式。對於你的鑰匙,你希望兩個值被看作是不同的,但在你的正常比較中,你希望他們被看作是相同的。
雖然在指定查詢時有一個技巧:只需將結果轉換爲utf8而不指定排序規則。這將轉換結果並將排序規則恢復爲默認值。
下面的例子顯示,你明白我的意思:
mysql> show create table test_col;
+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test_col | CREATE TABLE `test_col` (
`name` varchar(200) COLLATE utf8_bin DEFAULT NULL,
UNIQUE KEY `ixuniq` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin |
+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> insert into test_col (name) values ('Y'),(unhex('c39d'));Query OK, 2 rows affected (0.00 sec)
Records: 2 Duplicates: 0 Warnings: 0
mysql> select * from test_col;
+------+
| name |
+------+
| Y |
| Ý |
+------+
2 rows in set (0.00 sec)
mysql> select * from test_col where name='Y';
+------+
| name |
+------+
| Y |
+------+
1 row in set (0.00 sec)
mysql> select * from test_col where convert(name using 'utf8')='y';+------+
| name |
+------+
| Y |
| Ý |
+------+
2 rows in set (0.00 sec)
您可以使用varbinary列,該列完全忽略歸類設置強加的任何相等性。我不認爲Id建議這是一個好主意,但我只是說它是可能的。 – carpii