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

如何在SELECT语句中筛选排除以特殊字符开头的列值

SQL查询过滤特殊字符开头记录的实现方案

需求梳理

你需要过滤字段值以非字母开头的记录,仅保留以英文字母开头的结果,针对你给出的示例数据,最终会返回dog、cat、mouse三条记录。

实现方式

1. 正则匹配写法(支持正则的主流数据库通用思路)

核心逻辑是用正则匹配字段值是否以英文字母开头,不同数据库的正则语法略有差异:

  • MySQL/MariaDB
-- 假设表名为your_table,存储值的字段名为val
SELECT val FROM your_table WHERE val REGEXP '^[a-zA-Z]';
  • PostgreSQL
SELECT val FROM your_table WHERE val ~ '^[a-zA-Z]';
  • Oracle 10g及以上版本
SELECT val FROM your_table WHERE REGEXP_LIKE(val, '^[a-zA-Z]');

2. 非正则兼容写法(适配不支持正则的数据库场景)

如果数据库不支持正则,可以取字段的第一个字符判断是否属于英文字母范围:

SELECT val FROM your_table 
WHERE LEFT(val,1) BETWEEN 'a' AND 'z' 
OR LEFT(val,1) BETWEEN 'A' AND 'Z';

自定义调整说明

如果你需要调整“特殊字符”的判定范围,比如允许数字开头的记录也保留,只需要把正则的匹配规则修改为^[a-zA-Z0-9]即可,非正则写法同理增加对应字符的判断条件就行。


内容的提问来源于stack exchange,提问作者J.Do

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:15:03