0

我创建了一个 MYSQL 存储过程,它搜索表的所有列(参数 1)以查找其中是否包含字符串(参数 2)。问题是,当我将 datetime 列与包含希腊字符的字符串进行比较时,我收到以下错误:

SELECT * FROM my_table WHERE my_datetime LIKE '%ΕΛΛΗΝΙΚΑ%';
'like' 操作的排序规则的非法混合

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

4

1 回答 1

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%';
于 2012-11-15T08:24:38.100 回答