我对 MySQL 的排序规则和非 BMP 字符(Unicode 代码点高于 U+FFFF 的字符)感到非常头疼。
基本上,给定一个表和数据,如:
CREATE TABLE `math` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`symbols` varchar(32) character set utf8mb4 not null,
PRIMARY KEY (`id`),
UNIQUE KEY `symbols` (`symbols`)
);
INSERT INTO `math` VALUES (1,'');
Run Code Online (Sandbox Code Playgroud)
(您可能没有字体来显示上面字符串文字中的字符。它是U+1D542 MATHEMATICAL DOUBLE-STRUCK CAPITAL K)
事情看起来不错:
mysql> select * from math;
+----+---------+
| id | symbols |
+----+---------+
| 1 | |
+----+---------+
1 row in set (0.00 sec)
mysql> select * from math where symbols = '';
+----+---------+
| …Run Code Online (Sandbox Code Playgroud)