Oracle Regexp_replace字符串

时间:2018-01-30 14:39:24

标签: sql regex oracle regexp-replace

我们说我有以下字符串:

lib

如何使用notNull(devhx_8_other2_name_2) AND notNull(devhx_8_other2_amt) 将其更改为:

regexp_replace

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

使用

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

这会查找'notNull',后面紧跟一个左括号,其他字符和右括号。它用包括括号的字符串替换它,但没有'notNull'并且追加'不为空'。

答案 2 :(得分:1)

您可以使用模式:

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

然后将其替换为\1 is not null,将\1替换为第一个捕获组中匹配的值。像这样:

SELECT REGEXP_REPLACE(
         your_column,
         'notNull(\(.+?\))',
         '\1 is not null'
       )
FROM   your_table

答案 3 :(得分:-1)

使用以下regexp_replace函数:

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

我在这里替换了#not; nullNull'非空间,即''然后更换右括号,即')'有一个右括号,一个空格和文本'不是空的'。