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

MySQL使用LIKE '%string%'通配符搜索是否默认不区分大小写?

MySQL大小写敏感性规则说明

你观察到的差异是正常现象,并非操作失误。MySQL的大小写敏感行为不是全局固定的,默认逻辑由字符集排序规则(collation)、运行的操作系统、所用存储引擎三个维度共同决定,和BigQuery的默认规则存在差异。

核心原理:排序规则决定大小写敏感属性

MySQL的库、表、单独的字段都可以独立设置排序规则,主流默认排序规则为utf8mb4_general_ci(MySQL 5.x版本)或utf8mb4_0900_ai_ci(MySQL 8.0+版本),规则后缀中的ci就是 Case Insensitive(大小写不敏感) 的标识,这就是你测试时LIKE '%Park%'可以同时命中park、PARK、Park等多种大小写格式数据的核心原因。
如果排序规则后缀为cs(Case Sensitive,大小写敏感)或bin(二进制字节比对),那么查询时就会严格区分大小写,表现和你在BigQuery中看到的结果一致。

存储阶段的大小写处理逻辑

  • 采用ci后缀的不敏感排序规则时,MySQL会完整保留你写入数据的原始大小写,仅在字符串比对、排序操作时忽略大小写差异
  • 采用bin后缀的二进制排序规则时,会直接按字符的二进制编码做严格比对,存储和查询阶段都严格区分大小写

不同数据库的行为对齐方案

要让BigQuery实现和MySQL默认一致的不区分大小写匹配,可以用两种写法:

  • 统一转大小写后比对:WHERE LOWER(name) LIKE '%park%'
  • 用正则匹配的忽略大小写参数:WHERE REGEXP_CONTAINS(name, r'park', 'i')

要让MySQL实现和BigQuery一致的区分大小写匹配,可以临时指定排序规则:

SELECT * FROM 你的表名 WHERE name LIKE '%Park%' COLLATE utf8mb4_bin;

补充小提示:你示例中的条件name = '%Park%'存在语法问题,通配符%只有搭配LIKE关键字才会生效,用=时%会被识别为普通字符,仅能匹配完全等于%Park%的内容,建议修正为name LIKE '%Park%'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:54:09