首页 > 解决方案 > 在 PostGreSQL 中,regexp_replace 的反向引用应该在 CASE 语句中起作用吗?

问题描述

示例(总是选择 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

有没有办法使这项工作?

标签: regexpostgresqlswitch-statement

解决方案


不,不应该。

我也会regexp_match对 C 之前和 D 之后的东西使用 with groups ,然后使用 CASE 和连接从匹配的部分构造结果。


推荐阅读