【发布时间】:2018-04-04 01:11:15
【问题描述】:
我有一个包含 HTML 内容的表格。此内容可能包含一个或多个 URL。我还有一个映射表,其中包含 URL 及其相关的重写。 我需要能够在每个 HTML 内容中用它们存在的重写替换所有 URL。
用例(Postgres 9.5):
TABLE some_content (content_id int4, content text)
row1: 1, 'A BA BLAH PIKA',
row2: 2, 'B AB',
row3: 3, 'C PIKA NOTA CA'
TABLE rewrite (rule_id int4, old_string text, new_string text)
row1: 1, 'PIKA', 'CHU',
row2: 2, 'BLAH', 'POM'
查询应输出以下集合:
row1: 1, 'A BA POM CHU'
row2: 2, 'B AB'
row3: 3, 'C CHU NOTA CA'
在rewrite 表中添加新行,如:
row3: 3, 'NOTA', 'ISB'
然后将结果集转换为 (int4, text):
row1: 1, 'A BA POM CHU'
row2: 2, 'B AB'
row3: 3, 'C CHU ISB CA'
有什么提示吗?
【问题讨论】:
-
Postgres 版本,表定义?
-
@ErwinBrandstetter 添加,谢谢
-
表
rewrite中应该有一个ID列。原则上,也因为应用替换的顺序很重要。另外,请澄清您是只想替换整个单词(定义分隔符准确)还是任何匹配项。 -
是的,也添加了。由于要替换的文本是 URL,因此整个匹配就足够了。谢谢。
标签: sql postgresql replace