2012-08-10 29 views
0

我创建了一个MYSQL存储过程,它搜索表(参数1)的所有列,以查找它们是否包含字符串(参数2)。问题是,当我将日期时间列与包含希腊字符的字符串进行比较时,出现以下错误:比较日期时间和字符串时,非法混用排序规则

SELECT * FROM my_table WHERE my_datetime LIKE'%ΕΛΛΗΝΙΚΑ%';排序规则进行操作的“喜欢”

查询的执行
非法组合是成功的,当我使用拉丁字符。我知道如何避免根据数据类型检查列,但是我真的希望能够搜索日期时间字符串。我使用MySQL 5.5.24。数据库的排序规则是utf8_general_ci,服务器的排序规则是latin1_swedish_ci。在查询之前,我尝试了命令SET NAMES utf8,但没有运气。有任何想法吗?谢谢。

+0

这可能会提供一些帮助。 http://stackoverflow.com/a/38988033/2155377 – 2016-08-17 04:19:09

回答

2

我有类似查询一个问题:

SELECT * FROM some_table WHERE some_date LIKE '%2012-01%'; 

结果是一个“排序规则的非法组合”的错误。

使用简单DATE_FORMAT功能帮助:

SELECT * FROM some_table WHERE DATE_FORMAT(some_date, '%Y-%m-%d') LIKE '%2012-01%'; 
+0

实际上这是一个解决mysql错误的解决方法:https://bugs.mysql.com/bug.php?id = 61034 – Scadge 2017-08-23 15:42:47