网站首页 文章专栏 REGEXP_INSTR()函数

REGEXP_INSTR()函数

编辑时间:2019-09-24 11:53:03 作者:蓝若忧子 浏览量:97





    前言:REGEXP_INSTR()


REGEXP_INSTR

语法:

REGEXP_INSTR (source_char, pattern

              [, position
                 [, occurrence
                    [, return_opt
                       [, match_param
                          [, subexpr]
                       ]
                    ]
                 ]
              ]


source_char是作为搜索值的字符表达式。它通常是一个字符列,并且可以是以下任何字符数据类型CHAR,VARCHAR2,NCHAR NVARCHAR2,CLOB或NCLOB。

pattern即正则表达式。它通常是一个文本字符,可以是CHAR,VARCHAR2,NCHAR,orNVARCHAR2中的任何数据类型。它最多可以包含512个字节。如果pattern的数据类型和source_char的数据类型不同,那么Oracle数据库将其转换为source_char的数据类型。有关你可以在pattern中指定的运算符的列表,请参阅附录D ,“Oracle Regular Expression Support”。

positin是一个正整数,指出Oracle在source_char中开始搜索的位置。默认值是1,这意味着Oracle从 source_char的第一个字符开始搜索。

occurrence 是一个正整数,指出Oracle在source_char搜索第n次pattern出现的位置。默认值是1,这意味着Oracle搜索pattern第一次出现的位置。如果occurrence 大于1,那么数据库会从第一次pattern出现后的第一个字符开始搜索第二次出现,以此类推。这一点和INSTR函数不同,后者是从第一次出现的第二个字符开始搜索第二次出现。。

return_option让你指定了Oracle不同的返回值:

如果指定为0,则Oracle返回匹配字符串的第一个字符的位置。这是默认的。

如果您指定1,那么Oracle返回匹配字符串后第一个字符的位置。

match_parameter是一个文本文字,它可以让你改变函数的默认匹配行为。此参数的功能与REGEXP_COUNT相关参数类似,请参阅REGEXP_COUNT的详细信息。

subexpr,对于包含子表达式的pattern,subexpr 是从0到9的整数,指示pattern中哪个子表达式中是函数搜寻的目标。subexpr是pattern中用括号括起来的片段。子表达式可以嵌套。子表达式按照他们在pattern中做左括号出现的位置排序编号。


使用subexpr 参数来搜索pattern中特定的子表达式。第一条语句返回的是源字符串中第一个子表达式,即“123”,第一次出现的位置:

SELECT REGEXP_INSTR('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 1)
"REGEXP_INSTR" FROM DUAL;
 
REGEXP_INSTR
-------------------
1

以下语句返回的是源字符串中第二个子表达式,即“45678”,第一次出现的位置:

SELECT REGEXP_INSTR('1234567890', '(123)(4(56)(78))', 1, 1, 0, 'i', 2)
"REGEXP_INSTR" FROM DUAL;
 
REGEXP_INSTR
-------------------
4



    出自:何冰华个人网站

    地址:http://www.hebinghua.com/

    转载请注明出处


来说两句吧
最新评论