MySQL 8.0.31执行SELECT CHAR语句返回BLOB而非预期字符求助
问题解决:MySQL CHAR()函数返回BLOB而非预期字符
原因分析
你执行SELECT CHAR(128,129,130,131,132,133,134,135,136,137);返回BLOB,是因为当前默认字符集是utf8mb4——utf8mb4属于Unicode字符集,128-137这些数值并不是有效的Unicode编码点,MySQL无法将其解析为字符串,所以返回BLOB类型。而《Learning SQL》里的示例是基于Latin1字符集编写的,在Latin1中,这些数值正好对应你预期的Çüéâäàåçêë。
解决办法
方法1:显式指定CHAR()函数使用latin1字符集
执行以下语句即可得到预期结果:
SELECT CHAR(128,129,130,131,132,133,134,135,136,137 USING latin1);
方法2:临时修改会话字符集为latin1
先执行:
SET NAMES latin1;
再执行原查询语句:
SELECT CHAR(128,129,130,131,132,133,134,135,136,137);
注意:方法2仅对当前会话生效,不会改变全局或数据库的默认字符集,适合临时测试使用。
内容的提问来源于stack exchange,提问作者AK Sanglay
相关产品推荐
相关产品推荐

