首页 > mysql concat用法?

mysql concat用法?

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是从哪里来的呢?


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.

【热门文章】
【热门文章】