从10g开始,可以在查询中使用
一、正则表达式:
1、REGEXP_LIKE :匹配
REGEXP_LIKE(source_string, pattern[, match_parameter]):返回满足匹配模式的字符串
相当于增强的like函数。
Source_string指定源字符表达式; pattern指定规则表达式; match_parameter指定默认匹配操作的文本串。其中 match_parameter参数都是可选的。
match_parameter的取值如下:
'c' 说明在进行匹配时区分大小写(缺省值); 'i' 说明在进行匹配时不区分大小写; 'n' 允许使用可以匹配任意字符的操作符; 'm' 将x作为一个包含多行的字符串。 ‘x’ 忽略空白字符。
1 |
SELECT * FORM. tKHXX where REGEXP_LIKE(SJHM, '^[1]{1}[35]{1}[[:digit:]]{9}$' |
2、REGEXP_REPLACE :替换
REGEXP_REPLACE(source_string,pattern,replace_string,position,occurtence,match_parameter):字符串替换函数
相当于增强的replace函数。
1 |
select length(regexp_replace( '123-345-566' , '[^-]' , '' )) from dual; |
3、REGEXP_INSTR :位置
REGEXP_INSTR(source_string, pattern[, start_position[, occurrence[, return_option[, match_parameter]]]])该函数查找 pattern ,并返回该模式的第一个位置。
您可以随意指定您想要开始搜索的 start_position。
1 |
SELECT REGEXP_INSTR ( 'hello itmyhome' , 'e' ) FROM dual |
4、REGEXP_SUBSTR :提取
REGEXP_SUBSTR(source_string, pattern[,position [, occurrence[, match_parameter]]]):返回匹配模式的子字符串。
相当于增强的substr函数。
Source_string指定源字符表达式; pattern指定规则表达式; position指定起始搜索位置; occurtence指定替换出现的第n个字符串; match_parameter指定默认匹配操作的文本串。其中position,occurtence,match_parameter参数都是可选的。
1 |
SELECT REGEXP_SUBSTR ( 'hello my phone is 520 ' , '[0-9]+' ) FROM dual; --520 |
5、REGEXP_COUNT (Oracle 11g 新增) :计数
REGEXP_COUNT (source_char, pattern [, position [, match_parameter]])统计字符串出现的次数
1 |
select REGEXP_COUNT( '123-345-566' , '-' ) from dual; |
二、预定义的 POSIX 字符簇
[:alpha:]: 字母字符
[:lower:]: 小写字母字符
[:upper:]: 大写字母字符
[:digit:]: 数字
[:alnum:]: 字母数字字符
[:space:]: 空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符
[:punct:]: 标点字符
[:cntrl:]: 控制字符(禁止打印)
[:print:]: 可打印字符
到此这篇关于在Oracle中使用正则表达式的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://www.cnblogs.com/springsnow/p/9394904.html