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

为何MariaDB 10.2中RLIKE在二进制字符集下匹配á与è?

MariaDB RLIKE操作符处理二进制字符串的匹配异常
  • 涉及版本:MariaDB 10.2.13、10.3.39
  • 异常现象:使用RLIKE操作符检查二进制字符串á中是否存在字符è时,返回结果为true,对应测试语句:convert('á' using binary) RLIKE '[è]': 1

以下是完整的查询语句及执行结果:

(root@127.0.0.1:3306) [test]> select 
    char(50081), 
    char(50088), 
    hex(char(50081)), 
    hex('á'), 
    char(50081) RLIKE '[è]', 
    char(50088) RLIKE '[á]', 
    convert(char(50088) using utf8) RLIKE '[á]', 
    convert(char(50088) using utf8mb4) RLIKE '[á]', 
    convert('á' using binary) RLIKE '[è]', 
    'á' RLIKE '[è]' \G
*************************** 1. row ***************************
                char(50081):á
                char(50088):è
           char(50081)的十六进制值:C3A1
                  'á'的十六进制值:C3A1
           char(50081) RLIKE '[è]':1
           char(50088) RLIKE '[á]':1
convert(char(50088) using utf8) RLIKE '[á]':0
convert(char(50088) using utf8mb4) RLIKE '[á]':0
        convert('á' using binary) RLIKE '[è]':1
                      'á' RLIKE '[è]':0
1 row in set (0.00 sec)

从结果可以看出:

  • 当字符串以二进制类型进行RLIKE匹配时,出现了不符合预期的跨字符匹配(á和è互相匹配成功)
  • 当字符串转换为utf8或utf8mb4编码后再进行RLIKE匹配,结果恢复正常(返回0,表示不匹配)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:35:19