gpt4 book ai didi

MySQL 认为 'е' 和 'ё' 相等,我如何设置它认为它们不同?

转载 作者:可可西里 更新时间:2023-11-01 06:33:55 24 4
gpt4 key购买 nike

我有一个在 varchar 字段上具有唯一约束的表。当我尝试在两个不同的行中插入“e”和“ё”时,系统提示我违反了唯一约束。执行以下 select 显示 MySQL 认为字母是等价的,尽管它们的 HEX 值分别为 D0B5 和 D191。

select  'е' = 'ё',
hex('е'),
hex('ё');

经过大量谷歌搜索,我发现了 this似乎处理此问题的 MySQL 错误报告。 Sveta Smirnova 的最后回复指出此行为是设计使然,并引用了 Collation chart for utf8_unicode_ci, European alphabets (MySQL 6.0.4) .

为了查询目的,我如何告诉 MySQL 'е' 不等于 'ё' 以及我如何更改唯一约束以注意到这一事实?

最佳答案

您可能希望查看此答案:Is it possible to remove mysql table collation?

您看到的行为是标准的。在大多数情况下,它会产生最好的结果。从兴趣点来看,您是否有一个例子说明这是如何给您带来问题的。你有没有找到两个除了diacritic之外都匹配的词? ?

无论哪种方式,您唯一能做的就是更改排序规则。这可以在服务器、数据库、表甚至字段级别完成。

而不是我复制有关如何执行此操作的手册;请点击此链接:http://dev.mysql.com/doc/refman/5.7/en/charset-syntax.html

此处列出了支持的不同排序规则:http://dev.mysql.com/doc/refman/5.5/en/charset-charsets.html

关于MySQL 认为 'е' 和 'ё' 相等,我如何设置它认为它们不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25297370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com