未解决 :concat('测试',name_const('test',123456));

select concat('测试',name_const('test',123456));

ERROR 1267 (HY000): Illegal mix of collations (gbk_chinese_ci,COERCIBLE) and (latin1_swedish_ci,IMPLICIT) for operation 'concat'

  

问题1:在哪个位置出现latin1这个字符集呢?

问题2:COERCIBLE和IMPLICIT为什么会出现呢?

问题3:select charset(name_const('test',123456));为什么是二进制格式?

问题5:怎么表示一个binary类型的字符串?

 

1. 这涉及到“类型转换”这个知识点

只要某个值的类型,与上下文所要求的类型不相符,mysql就会根据操作的类型自动进行类型转换

对于concat()函数,它的作用是,把多个字符串连接成一个更长的字符串

所以如果concat里面的参数,不是字符串的话,就会转为字符串

gbk是国际标准的汉子字符集,这个集合一共包含21003个汉字,同时也包含英文

当出现'测试'的时候,为了装好汉字的数据,就使用了gbk的字符串类型了

 

问题5:怎么表示一个binary类型的字符串?

可以使用2种方式

1.常规方法,其他字符串编码也是这样转的

select charset(convert('test' using binary));

2.二进制本身也是一个函数

select charset(binary 'test');    #内幕183

  

 

posted @ 2015-10-17 17:17  lawrence.li  阅读(632)  评论(0编辑  收藏  举报