Oracle Regexp_replace 字符串

Oracle Regexp_replace string

假设我有以下字符串:

notNull(devhx_8_other2_name_2)  AND   notNull(devhx_8_other2_amt)

如何使用regexp_replace将其更改为:

(devhx_8_other2_name_2) is not null AND (devhx_8_other2_amt) is not null

使用以下 regexp_replace 函数:

regexp_replace(regexp_replace(string_name,"notNull",""),"')","') is not null")

在这里,我将 'notNull' 替换为非 space 即 '',然后将右括号即 ')' 替换为右括号、space 和文本 'is not null'。

假设您的字符串始终采用您显示的格式,则不需要正则表达式:

replace( replace( yourString, ')', ') is not null '), 'notNull', '')

使用

regexp_replace(col, 'notNull(\([^)]+\))', ' is not null', 1, 0)

这将查找 'notNull',紧接着是一个左括号、其他字符和一个右括号。它用包含括号但没有 'notNull' 的字符串替换它并附加 'is not null'.

您可以使用模式:

  • notNull - 匹配字符串
  • ( - 启动捕获组
  • \(.+?\) - 匹配左括号,然后匹配一个或多个字符,但尽可能少,直到它匹配右括号
  • ) - 捕获组结束。

然后用 is not null 替换它,这将用 </code> 替换第一个捕获组中匹配的值。像这样:</p> <pre><code>SELECT REGEXP_REPLACE( your_column, 'notNull(\(.+?\))', ' is not null' ) FROM your_table