导读:本期聚焦于小伙伴创作的《如何在SQL查询中过滤掉包含数字的字符串 利用REGEXP正则表达式函数实现》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在SQL查询中过滤掉包含数字的字符串 利用REGEXP正则表达式函数实现》有用,将其分享出去将是对创作者最好的鼓励。

在SQL数据处理的实际场景中,我们经常会遇到需要筛选纯文本字符串的需求,比如从用户表中提取不包含数字的纯中文姓名,或者从编码表中筛选出纯字母的业务编码,这时候就需要过滤掉所有包含数字的字符串。利用REGEXP正则表达式函数可以高效实现这个需求,不同数据库的正则表达式语法略有差异,但核心逻辑一致。

如何在SQL查询中过滤掉包含数字的字符串 利用REGEXP正则表达式函数实现

REGEXP正则表达式匹配规则

要过滤包含数字的字符串,核心是正则表达式匹配数字的规则,常用的数字匹配表达式为[0-9],表示匹配0到9之间的任意一个数字。如果字符串中包含任意一个该范围内的字符,就说明字符串包含数字。对应的,不包含数字的正则表达式就是^[^0-9]*$,其中^表示字符串开头,[^0-9]表示不匹配0到9的任意字符,*表示前面的字符可以出现0次或多次,$表示字符串结尾,整体含义就是整个字符串都不包含0到9的数字。

MySQL中使用REGEXP过滤包含数字的字符串

MySQL从版本3.23.4开始支持REGEXP运算符,用于正则表达式匹配。如果要查询表中不包含数字的字符串,可以使用NOT REGEXP来判断。

假设我们有一张user_info表,结构如下:

字段名类型说明
idint用户ID
user_namevarchar(50)用户名称

现在需要查询user_name不包含数字的记录,查询语句如下:

-- 查询user_name不包含数字的记录
SELECT id, user_name
FROM user_info
WHERE user_name NOT REGEXP '[0-9]';

如果要查询包含数字的记录,只需要去掉NOT即可:

-- 查询user_name包含数字的记录
SELECT id, user_name
FROM user_info
WHERE user_name REGEXP '[0-9]';

PostgreSQL中使用~运算符实现过滤

PostgreSQL中没有REGEXP函数,而是使用~运算符表示正则匹配,!~表示不匹配正则。同样查询不包含数字的user_name记录,语句如下:

-- 查询user_name不包含数字的记录
SELECT id, user_name
FROM user_info
WHERE user_name !~ '[0-9]';

查询包含数字的记录使用~运算符:

-- 查询user_name包含数字的记录
SELECT id, user_name
FROM user_info
WHERE user_name ~ '[0-9]';

Oracle中使用REGEXP_LIKE函数实现过滤

Oracle提供了REGEXP_LIKE函数用于正则匹配,语法为REGEXP_LIKE(源字符串, 正则表达式),返回布尔值。过滤不包含数字的字符串示例如下:

-- 查询user_name不包含数字的记录
SELECT id, user_name
FROM user_info
WHERE NOT REGEXP_LIKE(user_name, '[0-9]');

查询包含数字的记录:

-- 查询user_name包含数字的记录
SELECT id, user_name
FROM user_info
WHERE REGEXP_LIKE(user_name, '[0-9]');

注意事项

  • 如果字符串中包含空值NULL,REGEXP匹配的结果也会是NULL,不会返回匹配的记录,需要提前处理NULL值,比如加上user_name IS NOT NULL的条件。
  • 不同数据库对正则表达式的支持略有差异,比如部分数据库支持d表示数字,部分不支持,建议统一使用[0-9]保证兼容性。
  • 如果字符串中包含其他特殊字符,只要不包含数字,上述正则规则依然会匹配成功,符合过滤包含数字字符串的需求。
正则表达式是处理字符串匹配的高效工具,掌握REGEXP相关的使用方法,可以解决很多复杂的字符串筛选问题,除了过滤数字,还可以用于过滤邮箱、手机号等特定格式的字符串。

SQLREGEXP正则表达式字符串过滤修改时间:2026-07-04 23:39:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。