В PostGreSQL должны ли обратные ссылки на regexp_replace работать в операторе CASE? - PullRequest
0 голосов
/ 20 ноября 2018

Пример (ELSE всегда выбирается):

SELECT regexp_replace('ABCDEFG','(C)(D)', CASE WHEN '\1' = 'C' THEN '+\2\1+' ELSE '-\1\2-' END);
**returns =>** AB-CD-EFG

SELECT regexp_replace('ABCDEFG','(C)(D)', CASE '\1' WHEN 'C' THEN '+\2\1+' ELSE '-\1\2-' END);
**returns =>** AB-CD-EFG

Есть ли способ заставить эту работу?

1 Ответ

0 голосов
/ 20 ноября 2018

Нет, не должно.

Я бы использовал regexp_match с группами для материала до C и после D, а затем построил бы результат из сопоставленных частей, используя CASE и конкатенацию.

...