- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle正则表达式的用法
正则表达式具有强大、便捷、高效的文本处理功能。能够添加、删除、分析、叠加、插入和修整各种类型的文本和数据。Oracle从10g开始支持正则表达式
?
一、Oracle预定义的 POSIX 字符类
?
字符类 说明 [:alpha:] 字母字符[:lower:] 小写字母字符 [:upper:] 大写字母字符 [:digit:] 数字 [:alnum:] 字母数字字符 [:space:] 空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符 [:punct:] 标点字符 [:cntrl:] 控制字符(禁止打印) [:print:] 可打印字符 [:alnum:] 字母和数字混合的字符 ?
二、正则表达式运算符和函数
1、REGEXP_SUBSTR
?REGEXP_SUBSTR为指定字符串的一部分与正则表达式建立匹配。
语法如下:
REGEXP_SUBSTR(source_string,
pattern,
start_position,
occurrence,
match_parameter)
说明
其中source_string是必须的。可以是带引号的字符串或者变量。
Pattern是用单引号引用的与正则表达式。
Start_position指定了在字符串中的准确位置,默认值为1。
Occurrence是一个选项,指定在源字符串匹配过程中相对其他字符串,哪个字符串应该匹配。
最后,match_parameter也是一个选项,指定在匹配时是否区分大水写。
?
实例
(1)、返回从ename的第二个位置开始查找,并且是以“L”开头到结尾的字串
SQL select regexp_substr(ename,L.*,2) substr from emp;?
(2)、
SELECT REGEXP_SUBSTR(mc,[a-z]+) FROM test;SELECT REGEXP_SUBSTR(mc,[0-9]+) FROM test;SELECT REGEXP_SUBSTR(aababcde,^a.*b) FROM DUAL;?
(3)、
?
SQL 代码 ??复制
REGEXP_INSTR(source_string, pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])
参数:
start 开始查找的位置;occurrence 说明应该返回第几次出现pattern的位置;eturn_option 说明应该返回什么整数。若该参数为0,则说明要返回的整数是x中的一个字符的位置;若该参数为非0的整数,则说明要返回的整数为x中出现在pattern之后的字符的位置;match_option 修改默认的匹配设置。?
说明
该函数查找?pattern?,并返回该模式的第一个位置。您可以随意指定您想要开始有哪些信誉好的足球投注网站的start_position。?occurrence?参数默认为 1,除非您指定您要查找接下来出现的一个模式。return_option?的默认值为 0,它返回该模式的起始位置;值为 1 则返回符合匹配条件的下一个字符的起始位置。
?
实例
(1)、
Select REGEXP_INSTR(mc,[[:digit:]]$) from test;Select REGEXP_INSTR(mc,[[:digit:]]+$) from test;Select REGEXP_INSTR(The price is $400.,$[[:digit:]]+) FROM DUAL;Select REGEXP_INSTR(onetwothree,[^[[:lower:]]]) FROM DUAL;Select REGEXP_INSTR(,,,,,,[^,]*) FROM DUAL;Select REGEXP_INSTR(,,,,,,[^,]) FROM DUAL;?
(2)、查找员工编号中第一个非数字字符的位置
select regexp_instr(empno,[^[:digit:]]) position from emp;
?
(3)、从第三个字符开始,查找员工编号中第二个非数字字符的位置
select regexp_instr(empno,[^[:digit:]],3,2) position from emp;
(4)、
?
SQL 代码 ??复制
3、REGEXP_LIKESQL 代码 ??复制
SQL 代码 ??复制
文档评论(0)