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的字符 | ||
` | ` | 或操作符 | `'a | b'` 匹配 "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 正则表达式内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论