mysql concat用法?
高洛峰
高洛峰 2017-04-17 13:23:14
[MySQL讨论组]

select concat('测试',name_const('test',123456));
报错:[Err] 1267 - Illegal mix of collations (utf8_general_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation 'concat'

问题1:COERCIBLE和IMPLICIT是什么意思呢?为什么会出现这两个?

问题2:我用 select collation(name_const('test',123456)) 得到的结果是binary,为什么呢?还有就是name_const这个函数有什么用呢?网上说是为了写进去二进制日志什么的?

问题3:既然 name_const('test',123456) 的排序规则是binary,为什么报错会出现latin1_swedish_ci,这个latin1是从哪里来的呢?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
阿神

Latin1应该是因为NAME_CONST函数导致的,这个函数是mysql内部使用的,既然如此,有可能跟中文会有兼容问题吧。

NAME_CONST(name,value)

Returns the given value. When used to produce a result set column, NAME_CONST() causes the column to have the given name. The arguments should be constants.

mysql> SELECT NAME_CONST('myname', 14);
myname
+--------+
14

This function was added in MySQL 5.0.12. It is for internal use only. The server uses it when writing statements from stored programs that contain references to local program variables, as described in Section 18.6, “Binary Logging of Stored Programs”, You might see this function in the output from mysqlbinlog.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号