`
二师兄hit
  • 浏览: 4251 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Oracle中的正则函数

阅读更多

一、Oracle中的正则函数
1.REGEXP_SUBSTR
 (1)函数调用:REGEXP_SUBSTR(source_char,pattern,position,occurrence,match_param,subexpr)
    source_char:被匹配的字符串
    pattern:正则表达式
    position:匹配开始位置(可选,默认为1)
    occurrence:匹配第几个位置(可选,默认1)
    match_param:区分大小写检索(可选,i不分大小写,c区分大小写,默认c)
    subexpr:找到正则表达式中的第几个子表达式
 (2)使用:按正则表达式取字符串
 (3)例子
   1)SELECT REGEXP_SUBSTR('1,2,3,4,5','[^,]+') "REGEXPR_SUBSTR" FROM DUAL;
     结果 REGEXPR_SUBSTR
          1
   2)结合connect by 可以按照某个符号取出一列数据  
     SELECT REGEXP_SUBSTR('1,2,3,4,5','[^,]+',1,LEVEL) "REGEXPR_SUBSTR" FROM DUAL CONNECT BY LEVEL<=5;
   3)字符串中不确定被分割多少个字符串
     SELECT REGEXP_SUBSTR('1,2,3,4,5','[^,]+',1,LEVEL) "REGEXPR_SUBSTR" FROM DUAL CONNECT BY LEVEL<=LENGTH('1,2,3,4,5')-LENGTH(REPLACE('1,2,3,4,5',',',''))+1;   
   4)截取两个不同字段的字符串为多个子串
    WITH tmp AS
     (SELECT '小明,小红' s_name, '10,20' s_pay FROM dual
      UNION ALL
      SELECT '小红,小华,小张', '30,40,80'FROM dual
      UNION ALL
      SELECT '小明', '50'FROM dual)
    SELECT regexp_substr(t.s_name, '[^,]+', 1, l),
           regexp_substr(t.s_pay, '[^,]+', 1, l)
      FROM tmp t,(SELECT LEVEL l FROM dual CONNECT BY LEVEL <= 100)
     WHERE l <=LENGTH(t.s_name) - LENGTH(regexp_replace(t.s_name, ',', '')) + 1;

2.REGEXP_LIKE
    (1)函数调用:REGEXP_LIKE(source_char,pattern,match_param)
       source_char:被匹配的字符串
       pattern:正则表达式
       match_param:区分大小写检索(可选,i不分大小写,c区分大小写,默认c)
    (2)例子
     1)例1(正则表达式的*元字码)
     WITH tmp AS
      (SELECT 'AD' elem FROM dual
       UNION ALL
       SELECT 'A1D' FROM dual
       UNION ALL
       SELECT 'A09D'FROM dual
       UNION ALL
       SELECT 'A09' FROM dual)
     SELECT * FROM tmp WHERE regexp_like(elem, '[a-z|A-Z][0-9]*[a-z|A-Z]');
     2)例2(正则表达式+元字码)
     WITH tmp AS
      (SELECT 'AD' elem FROM dual
       UNION ALL
       SELECT 'A1D' FROM dual
       UNION ALL
       SELECT 'A09D'FROM dual
       UNION ALL
       SELECT 'A09' FROM dual)
     SELECT * FROM tmp WHERE regexp_like(elem, '[a-z|A-Z][0-9]+[a-z|A-Z]');
 
3.REGEXP_INSTR
    (1)函数调用:REGEXP_INSTR (source_string, pattern, position,occurrence,return_option,match_parameter,subexpr)
        source_string:输入的字符串
        pattern:正则表达式
        position:标识从第几个字符开始正则表达式匹配。(默认为1)
        occurrence:标识第几个匹配组。(默认为1)
        return_option:0——返回第一个字符出现的位置。1:pattern下一个字符起始位置。
        match_parameter:取值范围
            i:大小写不敏感;
            c:大小写敏感;
              n:点号 . 不匹配换行符号;
              m:多行模式;
             x:扩展模式,忽略正则表达式中的空白字符。
        subexpr:找到正则表达式中的第几个子表达式    
            
    (2)例子
     1)例1
     SELECT regexp_instr('正则表达式在Oracle11g中的应用', '[a-z|A-Z|0-1]+')FROM dual;
     2)例2(occurrence)
     SELECT regexp_instr('正则表达式在Oracle11g中的应用oralce', '[a-z|A-Z|0-1]+',1,2)FROM dual;
     3)例3(return_option)
     SELECT regexp_instr('正则表达式在Oracle11g中的应用', '[a-z|A-Z|0-1]+',1,1,1) FROM dual;
     4)SELECT regexp_instr('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 4)  FROM DUAL;
    
4.REGEXP_REPLACE
    (1)函数调用
        REGEXP_REPLACE(source_string,pattern,replace_string,position,occurrence,match_parameter)
        source_string:输入的字符串
        pattern:正则表达式
        position:标识从第几个字符开始正则表达式匹配。(默认为1)
        occurrence:标识第几个匹配组。(默认为1)
        match_parameter:取值范围
    (2)例子    
     1)例1(替换字符串位置)
     SELECT regexp_replace('Ellen Hildi Smith', '(.*) (.*) (.*)', '\3, \1 \2') FROM dual
    
    

0
0
分享到:
评论

相关推荐

    Oracle正则表达式函数全面解析

    ### Oracle正则表达式函数全面解析 #### 一、引言 在数据库处理文本数据时,经常需要用到模式匹配。Oracle数据库提供了丰富的正则表达式函数,这些函数可以帮助开发者更高效地进行文本匹配、搜索和替换等操作。本文...

    Oracle数据库正则表达式

    在 Oracle 数据库中,正则表达式是一种强大的模式匹配工具,可以帮助用户快速搜索、替换和验证数据。从 Oracle 10g 开始,Oracle 内建了符合 IEEE POSIX (Portable Operating System for Unix)标准的正则表达式,...

    Oracle正则表达式函数

    Oracle数据库系统提供了...对于初学者来说,阅读《美河学习在线eimhe.com_Oracle正则表达式函数.pdf》和《美河学习在线eimhe.com_Oracle正则表达式.pdf》这两份资料,将有助于深入理解和掌握Oracle中的正则表达式功能。

    Oracle中的正则表达式

    Oracle中的正则表达式函数提供了强大的字符串处理功能,能够大大提高数据库应用程序的效率和可读性。 正则表达式的基本概念包括: * 元字符和普通字符:元字符是指在正则表达式中表示特殊含义的字符,如"."、"\"、...

    Oracle正则表达式详解(用法+实例)

    ### Oracle正则表达式详解(用法+实例) #### 一、正则表达式简介 正则表达式是一种用于匹配字符串中字符组合的工具。它由一个或多个字符及特殊的字符元组成,能够帮助我们执行复杂的字符串搜索和替换任务。在...

    Oracle的正则表达式

    在PL/SQL中,你可以使用`REGEXP_LIKE`函数来判断一个字符串是否符合某个正则表达式模式,`REGEXP_SUBSTR`函数用于提取匹配的部分,而`REGEXP_REPLACE`函数则可以替换符合模式的部分。 举例来说,如果你有一个员工表...

    Oracle通过正则表达式分割字符串 REGEXP_SUBSTR的代码详解

    REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(string, pattern, position, occurrence, modifier) string :需要进行正则处理的字符串 pattern :进行匹配的正则表达式 position :起始位置,从第几个...

    ORACLESQL正则表达式.pdf

    正则表达式是在 Oracle 10g 中添加的新特性,用于匹配字符串中的模式。下面是 ORACLE SQL 正则表达式的相关知识点: 匹配字符 * `[:alnum:]` 匹配任何字母和数字 * `[:alpha:]` 匹配任何字母 * `[:blank:]` 匹配...

    oracle正则表达式

    PDF文件"Oracle正则表达式函数介绍.pdf"很可能详细介绍了这些函数的使用方法、模式语法和实例,而"Oracle_正则表达式.txt"可能包含了更多示例或使用技巧。对于学习和理解Oracle正则表达式,这两个文件都是宝贵的资源...

    Oracle正则表达式函数介绍.rar

    在Oracle中,正则表达式通过内置的函数实现,这些函数极大地增强了SQL查询的能力。 1. **REGEXP_LIKE()** `REGEXP_LIKE()` 是Oracle中使用正则表达式进行模式匹配的主要函数。它的基本语法是: ``` REGEXP_LIKE...

    Oracle正则表达式函数介绍[定义].pdf

    Oracle数据库系统支持正则表达式,这为在SQL查询中进行复杂文本匹配提供了强大的工具。...这就是Oracle正则表达式函数的强大之处,能够处理更复杂、灵活的文本匹配需求,极大地扩展了SQL的查询能力。

    Oracle 10g正则表达式函数

    Oracle 10g 正则表达式函数是 Oracle 数据库中的一种功能强大且灵活的字符串处理函数。它可以实现复杂的字符串匹配和提取功能,非常适合处理非结构化数据。 1. 元字符 在 Oracle 10g 正则表达式中,元字符是特殊的...

    ORACLE_正则表达式摘录笔记

    九、Oracle正则表达式函数 1. `regexp_like(expression, regexp)`: 判断`expression`是否符合`regexp`的模式,返回布尔值。例如,`select * from people where regexp_like(name, '^J.*$')`等同于`select * from ...

    ORACLE正则表达式

    ORACLE 中的正则表达式函数 ------------------------- ORACLE 提供了 4 个函数来使用正则表达式: 1. `regexp_like(x, pattern)`: 当 x 能正确匹配字符串时返回 true。 2. `regexp_instr(x, pattern)`: 在 x 中...

    Oracle 10g正则表达式

    在Oracle 10g中,主要提供了四个与正则表达式相关的函数: 1. **REGEXP_LIKE**: 类似于`LIKE`函数,用于判断字符串是否符合指定的正则表达式模式。例如,要查找以数字"3"开头,后面跟着任意两个字符,然后是数字"41...

    oracle约束和索引笔记

    本笔记主要探讨了两个关键概念:约束和索引,这些都是Oracle数据库中的基础但至关重要的元素。 **1. 约束(Constraints)** 约束是Oracle数据库中用于确保数据完整性的规则。它们分为以下几种类型: - **非空约束...

Global site tag (gtag.js) - Google Analytics