今天有个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
这样编码就统一了,不过这个只是临时解决。最终还是根解决最好,直接修改字段的本身编码。
网友评论