我试图在mysql中执行这个concat查询
SELECT CONCAT(if(fName,fName,''),Name)
From Student错误:
#1271 -非法混合排序操作“concat”
发布于 2014-01-19 11:38:19
这是由于集合的差异,可以通过将两个字符串或列转换为一个集合来解决,比如UTF8。
CONCAT(CAST(fName AS CHAR CHARACTER SET utf8),CAST('' AS CHAR CHARACTER SET utf8))这将解决以下问题:)
您可以在MySQL here MySQL铸造中查看有关强制转换的更多信息。
发布于 2011-10-13 11:59:52
在连接中使用的字符集和/或排序规则与表中的字符集/排序规则不匹配。
有4种解决办法:
1-更改连接中的字符集:
//find out the charset used in your table.
SHOW TABLES LIKE 'student'
//set the server charset to match
SET NAMES 'charset_name' [COLLATE 'collation_name']2-更改表中使用的字符集以匹配服务器字符集:
//find out the charset used in the server
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
//Change the charset used in the table
ALTER TABLE student ......3-更改默认字符集设置并重新启动MySQL
编辑My.ini并替换character_set_*选项,以便它们与您的表匹配。
4-更改连接的字符集设置
客户端可以重写字符集和排序规则设置。
如果没有选项1或3应该修复您的问题,但是如果连接覆盖了这些设置,则需要检查连接字符串并编辑字符集/排序规则设置以匹配数据库。
一些建议:
找个字符集。我推荐UTF8和一个排序规则:我推荐utf8_general_ci。随时随地使用这些东西。
发布于 2011-10-13 12:00:52
只有在所有已使用值的排序规则匹配或使用排序规则时,所有排序规则都是所有排序规则的子集(从逻辑角度来看),级联才能工作。
如果要连接文本,则每个文本应该是相同的排序规则。查看数据库使用的排序规则,然后查看连接使用的排序规则:
show variables like '%coll%'collation_connection应该与您试图连接的表的排序规则匹配。如果没有,就会出现错误消息。
然后,可以更改连接排序规则以匹配表中的连接排序规则。
https://stackoverflow.com/questions/7753608
复制相似问题