网站首页 文章专栏 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
转载请注明出处