首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非法混合整理操作“concat”

非法混合整理操作“concat”
EN

Stack Overflow用户
提问于 2011-10-13 11:46:20
回答 5查看 50K关注 0票数 19

我试图在mysql中执行这个concat查询

代码语言:javascript
复制
SELECT CONCAT(if(fName,fName,''),Name) 
From Student

错误:

#1271 -非法混合排序操作“concat”

EN

回答 5

Stack Overflow用户

发布于 2014-01-19 11:38:19

这是由于集合的差异,可以通过将两个字符串或列转换为一个集合来解决,比如UTF8

代码语言:javascript
复制
CONCAT(CAST(fName AS CHAR CHARACTER SET utf8),CAST('' AS CHAR CHARACTER SET utf8))

这将解决以下问题:)

您可以在MySQL here MySQL铸造中查看有关强制转换的更多信息。

票数 27
EN

Stack Overflow用户

发布于 2011-10-13 11:59:52

在连接中使用的字符集和/或排序规则与表中的字符集/排序规则不匹配。

有4种解决办法:

1-更改连接中的字符集:

代码语言:javascript
复制
//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-更改表中使用的字符集以匹配服务器字符集:

代码语言:javascript
复制
//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。随时随地使用这些东西。

票数 23
EN

Stack Overflow用户

发布于 2011-10-13 12:00:52

只有在所有已使用值的排序规则匹配或使用排序规则时,所有排序规则都是所有排序规则的子集(从逻辑角度来看),级联才能工作。

如果要连接文本,则每个文本应该是相同的排序规则。查看数据库使用的排序规则,然后查看连接使用的排序规则:

代码语言:javascript
复制
show variables like '%coll%'

collation_connection应该与您试图连接的表的排序规则匹配。如果没有,就会出现错误消息。

然后,可以更改连接排序规则以匹配表中的连接排序规则。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7753608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档