it编程 > 编程语言 > 正则表达式

SQL REGEXP 正则表达式详解

51人参与 2025-04-03 正则表达式

sql中的正则表达式(通常表示为regexp或rlike)是一种强大的模式匹配工具,允许你执行复杂的字符串搜索和匹配操作。

基本语法

大多数sql实现支持以下基本语法

select column_name 
from table_name 
where column_name regexp 'pattern';

或者使用rlike

select column_name 
from table_name 
where column_name rlike 'pattern';

常用正则表达式元字符

元字符描述示例
.匹配任意单个字符'a.c' 匹配 "abc", "a c"
^匹配字符串开头'^a' 匹配以a开头的字符串
$匹配字符串结尾'a$' 匹配以a结尾的字符串
*匹配前一个字符0次或多次'a*b' 匹配 "b", "ab", "aab"
+匹配前一个字符1次或多次'a+b' 匹配 "ab", "aab"
?匹配前一个字符0次或1次'a?b' 匹配 "b", "ab"
[]匹配括号内的任意一个字符'[abc]' 匹配 "a", "b" 或 "c"
[^]不匹配括号内的任意字符'[^abc]' 匹配非a,b,c的字符
``或操作符`'ab'` 匹配 "a" 或 "b"
()分组'(ab)+' 匹配 "ab", "abab"
{n}匹配前一个字符恰好n次'a{2}' 匹配 "aa"
{n,}匹配前一个字符至少n次'a{2,}' 匹配 "aa", "aaa"
{n,m}匹配前一个字符n到m次'a{2,4}' 匹配 "aa", "aaa", "aaaa"
-- 基本用法
select * from users where name regexp '^j.*n$';
-- 不区分大小写匹配
select * from users where name regexp binary '^[a-z]';
-- 替换
select regexp_replace(phone, '[^0-9]', '') as clean_phone from customers;

实用示例

验证电子邮件格式

select email from users where email regexp '^[a-za-z0-9._%-]+@[a-za-z0-9.-]+\\.[a-za-z]{2,4}$';

提取字符串中的数字

-- mysql
select regexp_substr(description, '[0-9]+') as numbers from products;
-- postgresql
select (regexp_matches(description, '[0-9]+'))[1] as numbers from products;

查找包含特殊字符的记录

select * from comments where content regexp '[^a-za-z0-9 ]';

匹配特定格式的日期

select * from logs where entry_date regexp '^[0-9]{4}-[0-9]{2}-[0-9]{2}$';

性能考虑

正则表达式是sql中强大的工具,但需要根据具体的数据库系统来调整语法和使用方法

到此这篇关于sql regexp 正则表达式的文章就介绍到这了,更多相关sql regexp 正则表达式内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

如何高效替换HTML字符串中特定标签内容?

04-02

如何从HTML代码中提取特定内容如"label_name":"历史"的字符串?

04-02

Nginx 如何配置指向带有哈希值的 index.html 文件?

04-03

如何通过Linux strings命令提取特定类型的字符串

04-01

如何结合grep使用Linux strings命令进行高效搜索

04-01

如何在nginx中配置仅允许访问index.php文件?

03-30

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论