mysql报错 Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for o...

今天有个SQL执行不了,通过错误输出查到了问题,大致SQL如下:

SELECT * FROM `table` WHERE `field1`=`filed2`

这个SQL看起来是一点错误都没有,但是缺爆出了下面这个错误:

Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation '='

意思就是编码不一致不能用“=” 运算符。那怎么办呢。。。还用说就是转换编码了,还好MySQL也有相关的函数。

CONVERT(table-colum USING utf8) COLLATE utf8_unicode_ci

比如是field1编码是utf8_unicode_ci,filed2编码是utf8_general_ci那么就会出现,那么SQL语句应该修改成这样子。

SELECT * FROM `table` WHERE `field1`=CONVERT(`filed2` USING utf8) COLLATE utf8_unicode_ci

这样编码就统一了,不过这个只是临时解决。最终还是根解决最好,直接修改字段的本身编码。

你可能感兴趣的:(mysql报错 Illegal mix of collations (utf8_unicode_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for o...)