未解决 :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