为何仅utf8mb4_0900_bin可正确比较含ASCII控制字符的字符串?
MySQL控制字符在字符串比较中的行为差异解释
这是Stack Overflow问题《How to make mysql consider the control characters when doing string comparison?》的延伸问题:
- 执行查询语句:
SELECT 'abc' < 'abcSOH' COLLATE utf8mb4_0900_bin;(其中SOH是ASCII码为1的起始头控制字符),预期返回1,因为第二个字符串长度为4;测试ASCII码32的空格时也得到相同预期。 - 测试发现仅
utf8mb4_0900_bin排序规则能返回预期结果,其他测试过的排序规则结果完全相反。 - 查阅官方文档未找到该现象的原因,寻求解释。
- 关注此问题的核心需求:需要使用1字节字符集及对应排序规则替代4字节字符集,避免迁移遗留表时因行过大触发报错。
内容的提问来源于stack exchange,提问作者Rasheduzzaman Sourov
相关产品推荐
相关产品推荐

