信息发布→ 登录 注册 退出

在Oracle中使用正则表达式

发布时间:2026-01-11

点击量:
目录
  • 一、正则表达式:
    • 1、REGEXP_LIKE :匹配
    • 2、REGEXP_REPLACE :替换
    • 3、REGEXP_INSTR :位置
    • 4、REGEXP_SUBSTR :提取
    • 5、REGEXP_COUNT (Oracle 11g 新增) :计数
  • 二、预定义的 POSIX 字符簇

    从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中使用正则表达式的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!