MySQL中“非法混合排序规则”错误的疑难解答

MySQL中“非法混合排序规则”错误的疑难解答

当试图通过MySQL中的存储过程进行选择时,我会得到以下错误。

非法组合排序规则(latin 1_General_cs,隐式)和(latin 1_General_ci,隐式)用于操作‘=’

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

表的排序是latin1_general_ci以及WHERE子句中列的latin1_general_cs.


扬帆大鱼
浏览 1024回答 3
3回答

肥皂起泡泡

这通常是通过比较两个不兼容排序规则字符串或试图将不同排序规则的数据选择到组合列中造成的。条款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操作员:二进制str是强制转换(str为二进制)的缩写。您的解决方案可能如下所示:SELECT * FROM table WHERE BINARY a = BINARY b;或,SELECT * FROM table ORDER BY BINARY a;
打开App,查看更多内容
随时随地看视频慕课网APP