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

MySQL如何检查字符串是否包含指定字符集中的任意字符?

最优简化方案

直接利用REGEXP的字符集合匹配能力,一次性覆盖所有无效字符,同时合并两个字段的匹配逻辑,不需要重复写多段LIKE/REGEXP判断:

SELECT id_customer, firstname, lastname 
FROM customer 
WHERE CONCAT(IFNULL(firstname, ''), IFNULL(lastname, '')) REGEXP '[0-9!<> ,;?=+()@#"°{}_$%/\\^*]';

说明

  • 所有你列出的无效字符都已经放到[]字符类中,REGEXP只要匹配到其中任意一个字符就会返回真,完美覆盖你的筛选需求
  • 用CONCAT合并两个姓名字段的判断,避免重复写两遍字段的匹配逻辑
  • 加IFNULL是为了避免某一个字段为NULL时,CONCAT结果为NULL导致漏判的问题,如果你表中的姓名字段不允许为NULL可以去掉这层包裹
  • 注意字符类中的反斜杠需要写双反斜杠\\做SQL转义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 02:45:00