Oracle中的REGEXP_REPLACE

时间:2019-06-04 14:11:41

标签: sql oracle regexp-replace

我需要使用REGEXP_REPLACE执行以下操作:

 If word starts with 'ABCD' then replace first four(4) chars with 'FFFF'
    else
 If word starts with 'XYZ' then replace first three(3) chars with 'GGG'

如何使用REGEXP_REPLACE进行条件替换?

2 个答案:

答案 0 :(得分:2)

您可以使用case和字符串操作:

select (case when word like 'ABCD%'
             then 'FFFF' || substr(word, 5)
             when word like 'XYZ%'
             then 'GGG' || substr(word, 4)
             else word
        end) as new_word

答案 1 :(得分:1)

如果必须为REGEXP_REPLACE,则必须合并两个函数调用:

REGEXP_REPLACE( 
  REGEXP_REPLACE(word,'^ABCD','FFFF')
  ,'^XYZ', 'GGG')

但是我会喜欢戈登的case方法...