在Oracle中使用正则表达式
从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’ 忽略空白字符。
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函数。
- Source_string指定源字符表达式;
- pattern指定规则表达式;
- replace_string指定用于替换的字符串;
- position指定起始搜索位置;
- occurtence指定替换出现的第n个字符串;
- match_parameter指定默认匹配操作的文本串
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。
- occurrence 参数默认为 1,除非您指定您要查找接下来出现的一个模式。
- return_option 的默认值为 0,它返回该模式的起始位置;值为 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参数都是可选的。
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]])统计字符串出现的次数
select REGEXP_COUNT('123-345-566', '-') from dual;
二、预定义的 POSIX 字符簇
[:alpha:]:字母字符
[:lower:]:小写字母字符
[:upper:]:大写字母字符
[:digit:]:数字
[:alnum:]:字母数字字符
[:space:]:空白字符(禁止打印),如回车符、换行符、竖直制表符和换页符
[:punct:]:标点字符
[:cntrl:]:控制字符(禁止打印)
[:print:]:可打印字符
到此这篇关于在Oracle中使用正则表达式的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
oracle查询锁表及解锁,修改表字段名与复制表结构和数据的方法
今天小编就为大家分享一篇关于oracle查询锁表及解锁,修改表字段名与复制表结构和数据的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2018-12-12Oracle 实现类似SQL Server中自增字段的一个办法
由于Oracle中没有类似SQL Server中的自增字段,所以我们如果想要通过设定类似ID性质的唯一列的话,需要借助Oracle的sequence,先建立一个序列,然后在每次插入数据的时候,通过前触发器来更新ID值,并将序列的序号加1,这样的迂回方式来实现。2009-07-07解决Oracle DISTINCT 报错 inconsistent datatypes: expected
这篇文章主要介绍了Oracle DISTINCT报错inconsistent datatypes:expected-got CLOB(数据类型不一致: 应为-,但却获得 CLOB),本文给大家分享三种解决方案,需要的朋友可以参考下2023-07-07oracle不支持的字符集orai18n.jar ZHS16GBK异常问题解决办法
字符集是数据库中用来表示和存储字符的编码系统,这篇文章主要给大家介绍了关于oracle不支持的字符集orai18n.jar ZHS16GBK异常问题的解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下2024-02-02
最新评论