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

使用SELECT DISTINCT筛选不合规姓名的SQL语句正确性咨询

原写法问题说明

原SQL写法完全不正确,存在两个核心问题:

  • 逻辑覆盖不全:仅校验了字段是否包含1~6的数字,漏掉了0、7、8、9四个数字,你示例中ID为4的hi789记录包含7、8、9,用原SQL完全查询不到,无法得到预期结果
  • 写法冗余低效:多个OR条件拼接的LIKE查询不仅维护成本高,执行性能也远低于批量匹配方案

优化实现方案

从你的示例可以推出姓名的规范是「仅允许英文字母和空格,不能包含数字」,要筛选不符合规范的记录,核心逻辑是匹配字段中是否存在数字,根据你使用的数据库类型,可选择对应更简洁的实现:

  • SQL Server 环境:
select * from table where full_name like '%[0-9]%'
  • MySQL / MariaDB 环境:
select * from table where full_name regexp '[0-9]'
  • PostgreSQL 环境:
select * from table where full_name ~ '[0-9]'

如果需要更严格的校验(比如同时过滤特殊符号、非英文文字等不符合姓名规范的内容),可以用反向匹配规则,比如MySQL环境下可以写:

select * from table where full_name regexp '[^a-zA-Z ]'

只要字段中出现英文字母、空格之外的字符,都会被判定为不符合规范筛选出来,覆盖场景更全面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 09:27:03