为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

扬帆大鱼 2019-07-06 15:38:11
MySQL中“非法混合排序规则”错误的疑难解答当试图通过MySQL中的存储过程进行选择时,我会得到以下错误。非法组合排序规则(latin 1_General_cs,隐式)和(latin 1_General_ci,隐式)用于操作‘=’知道这里可能出了什么问题吗?表的排序是latin1_general_ci以及WHERE子句中列的latin1_general_cs.
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

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

条款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;


查看完整回答
反对 回复 2019-07-06
  • 3 回答
  • 0 关注
  • 1023 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信