REGEXP_REPLACE в Oracle - PullRequest
       40

REGEXP_REPLACE в Oracle

1 голос
/ 04 июня 2019

Мне нужно использовать 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 ]

2 голосов
/ 04 июня 2019

Вы можете использовать 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 голос
/ 04 июня 2019

Если это должно быть REGEXP_REPLACE, вам придется объединить два вызова функций:

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

Но я бы предпочел подход Гордона case ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...