gpt4 book ai didi

PostgreSQL Insert into with case 和 concat

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

我正在尝试创建一个插入触发器,它将从表 A 中获取两个字符串字段(x 和 y)并将它们连接到表 B 中的单个字段中。如果 y 不为空,我想添加一个 '- ' 当我连接时在 x 和 y 之间。到目前为止,我的代码看起来像这样:

BEGIN
INSERT INTO B(xy,z)
SELECT y,z,
CASE WHEN y IS NOT NULL then concat('some prefix',x,' - ',y)
ELSE concat('some prefix',x)
END
FROM(SELECT NEW.x, NEW.y NEW.z) as n;
WHERE [some conditions]
RETURN NEW;
END;

据我所知,它应该在表 B 的 xy 字段中放置“一些前缀 x - y”或“一些前缀 x”,在 B 的 z 中放置来自 A 的 z,但我得到错误“INSERT has比目标列更多的表达式”。有人知道我做错了什么吗?

最佳答案

您的外部选择列表具有三个项 - yzcase 表达式,只需删除 y并重新排序其他两个,你应该没问题:

INSERT INTO B(xy,z)
SELECT
CASE WHEN y IS NOT NULL then concat('some prefix',x,' - ',y)
ELSE concat('some prefix',x)
END, -- First expression, goes into b.xy
z -- SEcond expression, goes into b.z
FROM(SELECT NEW.x, NEW.y NEW.z) as n;
WHERE [some conditions]

关于PostgreSQL Insert into with case 和 concat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50802738/

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