42人参与 • 2026-08-31 • 正则表达式
当我们要进行一些简单的糊涂查询时用百分号(%),通配符(_)就可以了.其中%表达任意长度的字符串,_表示任意的某一个字符。但如果在一些复杂的查询中关用这两个符号sql语句就会非常复杂,而且也不一定能实现.从oracle 10g开始引入了在其他程序语言中普通使用的正则表达式。主要有regexp_like(匹配),regexp_replace(替换),regexp_substr(提取),regexp_instr(包含)四个正则表达式函数。

含义:查看x是否与pattern相匹配,该函数还可以提供一个可选的参数match_option字符串说明默认的匹配选项。match_option的取值如下:
select * from emp where regexp_like(ename,'^a[a-z]*n$') 解析: 从emp表中匹配ename字段,要求以a开头,a-z任意多个字符(包括0个),n结尾。 例如ename为arwen或arwin或anden.但arwen不能被匹配.因为默认是区分大小写。 select * from emp where regexp_like(ename,'^a[a-z]*n$','i') 可以查找ename为arwen的行记录。
含义:用于在x中查找pattern。返回pattern在x中出现的位置。匹配位置从1开始。可以参考字符串函数 instr(),参数相关:
select regexp_instr('hello world','o',1,1,0);
==》5
解析:
查找o在hello word中第一次出现的位置。
start=1,occurrence=1,return_option=0
select regexp_instr('hello world','o',1,1,1);
==》6
查找o在hello word中第一次出现后的字符的位置,这里return_option=1也可以等于其他非0整数。
select regexp_instr('hello world','o',1,2,0);
==》8
查找o在hello word中第二次出现的位置(空格也属于一个字符位置)。
**含义:**用于在x中查找pattern并返回。可以参考字符串函数 substr(),参数同regexp_instr函数。

select regexp_substr('hello world','l{2}');
==》ll
解析:
查询到匹配的字符串才返回匹配的字符.没查到就返回空。
含义:用于在x中查找pattern,并将其替换为replae_string。可以参考字符串函数 replace(),参数同regexp_instr函数。
replace(string,from_str,to_str) 即:将string中所有出现的from_str替换为to_str。注意:from_str不能是空字符串 ('')。
select regexp_replace('hello world','o','x',1,1);
==》hellx world
解析:
start=1,occurrence=1。
select regexp_replace('hello world','o','x');
==》hellx wxrld
select regexp_replace('hello world','o','x',1,2);
==》hello wxrld
到此这篇关于sql正则表达式函数与元字符的文章就介绍到这了,更多相关sql正则表达式内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论