gpt4 book ai didi

MySQL Coercibility 对表达式 : why both expressions are unicode, 的整理是一个错误?

转载 作者:行者123 更新时间:2023-11-30 22:37:20 24 4
gpt4 key购买 nike

这是来自 MySQL 的表达式整理文档。 https://dev.mysql.com/doc/refman/5.5/en/charset-collation-expressions.html

我知道有一些规则可以确定强制性分数,然后 MySQL 使用强制性分数来解决歧义。

规则规定:“如果双方具有相同的可强制性,那么: 如果两边都是Unicode,或者两边都不是Unicode,都是错误的。"

这是什么意思?为什么两个表达式都是 unicode 会出错?在什么情况下会发生错误?

最佳答案

免责声明:我不是这方面的专家。

当您比较两个字符串时,MySQL 需要确保这两个字符串使用相同的排序规则/字符集(因此可以应用相同的比较规则)。

当字符串使用不同的字符集/排序规则时,MySQL 有规则来确定应将哪个转换为另一个。一般规则是将非 Unicode 字符集转换为 Unicode 字符集。

但是,如果双方都是 Unicode,并且可能是不同的 Unicode 字符集/排序规则,例如 utf8_general_ci vs utf8_bin,那么你得到一个错误,因为 MySQL 无法决定应该将哪一方转换为另一方(正如他们在文档中所说的那样,“哪一方应该获胜”)

通俗地说,这意味着您不能隐式地比较使用排序规则 A(例如 utf8_general_ci)存储在列中的字符串与使用排序规则 B(例如 utf8_bin) 相同的字符集(Unicode 或其他)。你会出现这样的错误:

ERROR 1267 (HY000): Illegal mix of collations (utf8_unicode_ci,EXPLICIT) and (utf8_bin,EXPLICIT) for operation '='

(注意:错误消息可以包含EXPLICITIMPLICITCOERCIBLE,具体取决于查询)

故事的寓意:避免在同一模式中混合使用不同的排序规则。

关于MySQL Coercibility 对表达式 : why both expressions are unicode, 的整理是一个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32128902/

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