gpt4 book ai didi

Postgresql 从另一个表中替换表中的字符串

转载 作者:行者123 更新时间:2023-11-29 12:25:25 25 4
gpt4 key购买 nike

我有两个表有问题,那些用于会计名为 tabela1 的第一个表有一组符号和帐户。第二张表是符号,第一张表中要更改的名称和第一张表的记录号。

Tabela1 是:

ID |KNT_S_WN | KNT_S_MA  |
1 |3021-_R | 3021-_K-_W|
2 |_W-_R | _Z |

Tabelas 是:

ID | SYMBOL  |REP        |   
1 | _R |7Z45 |
1 | _K |321-05 |
1 | _W |490 |
2 | _W |C1 |
2 | _R |C17 |
2 | _Z |320 |

我需要这个输出:

ID |KNT_S_WN   | KNT_S_MA       |
1 |3021-7Z45 | 3021-321-05-490|
2 |C1-C17 | 320 |

我试试这个:

update tabela set 
knt_s_wn=replace(knt_s_wn,
(select symbol from tabelas where tabela.id=tabelas.id and position(tabelas.symbol in knt_s_wn)>0),
(select a from tabelas where tabela.id=tabelas.id and position(tabelas.symbol in knt_s_wn)>0))

如果我使用这个表达式,如果不是 knt_s_wn 符号被删除(空白)。请帮助我!!!

最佳答案

最简单的解决方案之一是在 plpgsql 函数内的循环中替换字符串:

create or replace function multireplace(aid int, str text)
returns text language plpgsql as $$
declare
rec record;
begin
for rec in
select *
from tabelas
where id = aid
loop
str:= replace(str, rec.symbol, rec.rep);
end loop;
return str;
end $$;

Test it here.

关于Postgresql 从另一个表中替换表中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41703513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com