如何使用MySQL REGEXP仅隐藏以大写A-Z开头的查询结果?
解决方案
- 使用
BINARY关键字强制正则匹配区分大小写:SELECT coupon_id, name FROM ocl_coupon WHERE name NOT REGEXP BINARY '^[A-Z]' - 若使用MySQL 8.0及以上版本,也可直接用
REGEXP_BINARY函数:SELECT coupon_id, name FROM ocl_coupon WHERE name NOT REGEXP_BINARY '^[A-Z]'
原因说明
原语句同时过滤大小写开头结果的核心问题是:MySQL默认的字符串排序规则(如utf8_general_ci)是不区分大小写的,导致普通REGEXP匹配时[A-Z]会同时匹配大小写字母开头的内容。
通过BINARY关键字或REGEXP_BINARY函数,可让正则匹配强制区分大小写,此时^[A-Z]仅匹配大写字母开头的字符串,NOT REGEXP就能精准排除这类结果,保留小写开头、非字母开头的记录。
内容的提问来源于stack exchange,提问作者Athon
相关产品推荐
相关产品推荐

