非法混合排序规则"疑难解答mysql中的错误
本教程将介绍“非法混合排序规则"疑难解答mysql中的错误的处理方法,这篇教程是从别的地方看到的,然后加了一些国外程序员的疑问与解答,希望能对你有所帮助,好了,下面开始学习吧。
问题描述
尝试通过 MySQL 中的存储过程进行选择时出现以下错误.
用于操作="的排序规则 (latin1_general_cs,IMPLICIT) 和 (latin1_general_ci,IMPLICIT) 的非法混合
知道这里可能出了什么问题吗?
表格的排序规则是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 是 CAST(str AS BINARY) 的简写.
您的解决方案可能如下所示:
SELECT * FROM table WHERE BINARY a = BINARY b;
或者,
SELECT * FROM table ORDER BY BINARY a;
好了关于“非法混合排序规则"疑难解答mysql中的错误的教程就到这里就结束了,希望趣模板源码网找到的这篇技术文章能帮助到大家,更多技术教程可以在站内搜索。