小编mor*_*ahl的帖子

是否有(非二进制)MySQL 排序规则不将不同的数学符号视为相同的字符?

我对 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)

collation mysql-5.5 unicode

6
推荐指数
1
解决办法
311
查看次数

标签 统计

collation ×1

mysql-5.5 ×1

unicode ×1