在查询中使用mysql变量来运行类似的查询

时间:2014-11-22 12:33:38

标签: mysql

我正在尝试这个:

SET @query1 =  'star';
   SELECT *
   FROM businesses
   WHERE business_name LIKE @query1

但我得到以下错误:

  

错误代码:1267非法混合排序规则(utf8_unicode_ci,IMPLICIT)   和(utf8_general_ci,IMPLICIT)操作'like'

我做错了什么?

2 个答案:

答案 0 :(得分:3)

只需指定归类

即可
SELECT * FROM businesses WHERE business_name LIKE @query1 COLLATE utf8_unicode_ci

对于更永久的修复,您需要更改服务器的排序规则以与db兼容或反之亦然。我在排序规则方面没有太多经验,因此您可以进行一些阅读。

Docs

答案 1 :(得分:0)

很奇怪..但您可以将表格转换为该字符集,如:

ALTER TABLE mydb.businesses  DEFAULT COLLATE utf8_unicode_ci;
ALTER TABLE mydb.businesses CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;