You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让MySQL在字符串比较时识别控制字符,使指定比较返回0?

MySQL字符串比较忽略控制字符的解决方案

问题原因

你遇到的情况是因为MySQL大部分字符集的排序规则(比如latin1_swedish_ci)会忽略非打印的控制字符(像ASCII 1的SOH),导致包含控制字符的字符串和原字符串被判定为相等。

可行解决方案

  • 强制二进制比较

    • 直接在查询中使用BINARY关键字,强制逐字节对比:
      SELECT BINARY 'data' = 'dataSOH';
      
    • 或者指定二进制排序规则进行比较,比如匹配你的默认字符集使用latin1_bin:
      SELECT 'data' COLLATE latin1_bin = 'dataSOH';
      

    这两种方式都会严格检查每个字节的数值,SOH控制字符会被识别,查询会返回0。

  • 使用二进制类字符集/排序规则
    如果需要长期生效,可以将表字段的字符集改为binary类型,或者将排序规则设置为二进制类(如utf8mb4_bin、latin1_bin),这样默认的字符串比较就会严格区分控制字符。

内容的提问来源于stack exchange,提问作者Rasheduzzaman Sourov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 09:25:19