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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值