数据库sql中regexp_replace()的使用方法

regexp_replace(source_char, pattern, replace_string);

REGEXP_REPLACEREPLACE通过允许您在字符串中搜索正则表达式模式来扩展功能的功能。默认情况下,该函数会source_char在每次出现的正则表达式模式替换为时返回replace_string。返回的字符串与相同source_charVARCHAR2如果第一个参数不是LOB,CLOB则函数返回;如果第一个参数是LOB,则函数返回。

此函数符合POSIX正则表达式标准和Unicode正则表达式准则。有关更多信息,请参考附录C,“ Oracle正则表达式支持”

  • source_char是用作搜索值的字符表达式。它通常是一种字符列,并且可以是任何数据类型CHARVARCHAR2NCHARNVARCHAR2CLOBNCLOB
  • pattern是正则表达式。它通常是一个文本文字,可以是任何数据类型CHARVARCHAR2NCHAR,或NVARCHAR2。它最多可以包含512个字节。如果的数据类型pattern不同于的数据类型source_char,则Oracle数据库将转换pattern为的数据类型source_char。有关您可以在其中指定的运算符的列表pattern,请参考附录C,“ Oracle正则表达式支持”
  • replace_string可以是任何数据类型CHARVARCHAR2NCHARNVARCHAR2CLOB,或NCLOB。如果replace_stringCLOBNCLOB,则Oracle截断replace_string为32K。的replace_string最多可以包含500个形式的子表达式的反向引用\n,其中n是1到9之间的一个数字。如果n中的反斜杠字符是replace_string,则必须在其前加上转义字符(\\)。有关反向引用表达式的更多信息,请参阅笔记“甲骨文正则表达式支持”表C-1 
  • position是一个正整数,指示source_charOracle应该在哪里开始搜索的字符。默认值为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参数的值确定。
    • 句点(。)与换行符不匹配。