【发布时间】:2020-03-18 16:28:29
【问题描述】:
如果你想一次性替换多个字符串,当然可以嵌套 REPLACE 函数,例如。像这样:
SELECT REPLACE(REPLACE(REPLACE(foo, 'apple', 'fruit'), 'banana', 'fruit'), 'lettuce', 'vegetable')
FROM bar
如果您必须进行大量替换,您的代码将变得丑陋且难以阅读。有没有多替换功能之类的东西?哪个可能需要 2 个数组作为参数?可以肯定的是,我对 TRANSLATE 函数很熟悉,但正如我的示例所示,我想替换整个单词,而不仅仅是单个字符。
【问题讨论】:
-
您可以使用递归 CTE 来做到这一点。
-
可能使用正则表达式 - 但我怀疑它会更快。有时,通过转换为 xml 并在其上使用 xml 扩展,数据会很容易处理——这可能会奏效。
-
您在寻找性能还是“干净”?为了表现,做你正在做的事情。为了清洁,创建一个函数来做你想做的事情并使用它。
标签: sql postgresql replace