gpt4 book ai didi

mysql - 解决mysql中的 "Illegal mix of collations"错误

转载 作者:行者123 更新时间:2023-11-29 03:33:15 24 4
gpt4 key购买 nike

尝试通过 MySQL 中的存储过程进行选择时出现以下错误。

Illegal mix of collations (latin1_general_cs,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation '='

知道这里可能出了什么问题吗?

表的排序规则是latin1_general_ci,where子句中列的排序规则是latin1_general_cs

最佳答案

这通常是由于比较两个排序规则不兼容的字符串或试图将不同排序规则的数据选择到组合列中造成的。

COLLATE 子句允许您指定查询中使用的排序规则。

例如,以下 WHERE 子句将始终给出您发布的错误:

WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs

您的解决方案是为查询中的两列指定共享排序规则。下面是一个使用 COLLATE 子句的示例:

SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;

另一种选择是使用 BINARY 运算符:

BINARY str is the shorthand for CAST(str AS BINARY).

您的解决方案可能如下所示:

SELECT * FROM table WHERE BINARY a = BINARY b;

或者,

SELECT * FROM table ORDER BY BINARY a;

请记住,正如 Jacob Stamm 在评论中指出的那样,“转换列来比较它们将导致忽略该列上的任何索引”。

有关此整理业务的更多详细信息,我强烈推荐 eggyal's excellent answer to this same question .

关于mysql - 解决mysql中的 "Illegal mix of collations"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27367443/

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