regexp_replace(‘source_char
‘, ‘pattern
‘, ‘replace_string
‘);
REGEXP_REPLACE
REPLACE
通过允许您在字符串中搜索正则表达式模式来扩展功能的功能。默认情况下,该函数会source_char
在每次出现的正则表达式模式替换为时返回replace_string
。返回的字符串与相同source_char
。VARCHAR2
如果第一个参数不是LOB,CLOB
则函数返回;如果第一个参数是LOB,则函数返回。
此函数符合POSIX正则表达式标准和Unicode正则表达式准则。有关更多信息,请参考附录C,“ Oracle正则表达式支持”。
source_char
是用作搜索值的字符表达式。它通常是一种字符列,并且可以是任何数据类型CHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
或NCLOB
。pattern
是正则表达式。它通常是一个文本文字,可以是任何数据类型CHAR
,VARCHAR2
,NCHAR
,或NVARCHAR2
。它最多可以包含512个字节。如果的数据类型pattern
不同于的数据类型source_char
,则Oracle数据库将转换pattern
为的数据类型source_char
。有关您可以在其中指定的运算符的列表pattern
,请参考附录C,“ Oracle正则表达式支持”。replace_string
可以是任何数据类型CHAR
,VARCHAR2
,NCHAR
,NVARCHAR2
,CLOB
,或NCLOB
。如果replace_string
是CLOB
或NCLOB
,则Oracle截断replace_string
为32K。的replace_string
最多可以包含500个形式的子表达式的反向引用\n
,其中n
是1到9之间的一个数字。如果n
中的反斜杠字符是replace_string
,则必须在其前加上转义字符(\\
)。有关反向引用表达式的更多信息,请参阅笔记“甲骨文正则表达式支持”,表C-1 。position
是一个正整数,指示source_char
Oracle应该在哪里开始搜索的字符。默认值为1,表示Oracle从的第一个字符开始搜索source_char
。occurrence
是一个非负整数,指示替换操作的发生:- 如果指定0,则Oracle替换所有匹配项。
- 如果您指定一个正整数
n
,则Oracle替换n
出现的第th个。
match_parameter
是文本文字,可让您更改函数的默认匹配行为。此参数仅影响匹配过程,而对无效replace_string
。您可以为以下各项指定一个或多个以下值match_parameter
:'i'
指定不区分大小写的匹配。'c'
指定区分大小写的匹配。'n'
允许句点(。)(匹配任何字符)与换行符匹配。如果省略此参数,则句点与换行符不匹配。'm'
将源字符串视为多行。甲骨文解释^
和$
作为源串中的任何线的任意位置,而不是仅在整个源串的开始或结束的分别的开始和结束,。如果省略此参数,则Oracle将源字符串视为一行。- ‘x’忽略空格字符。默认情况下,空格字符会相互匹配。
如果指定多个矛盾值,则Oracle使用最后一个值。例如,如果指定
'ic'
,则Oracle使用区分大小写的匹配。如果您指定的字符不是上面显示的字符,则Oracle返回错误。如果您省略
match_parameter
,则:- 默认的区分大小写由
NLS_SORT
参数的值确定。 - 句点(。)与换行符不匹配。