gpt4 book ai didi

postgresql - 使用来自 VALUES 表达式的输入更新列,无需显式类型转换

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

我正在尝试使用 NULL 更新可为空的日期列,出于某种原因,Postgres 将 NULL 作为文本并给出以下错误

 UPDATE tbl
SET
order_date = data.order_date
FROM
(VALUES (NULL, 100))
AS data(order_date,id)
WHERE data.id = tbl.id

错误显示:

[42804] ERROR: column "order_date" is of type date but expression is of type text
Hint: You will need to rewrite or cast the expression.

我可以通过将 NULL 显式转换为日期来解决此问题,如下所示:

NULL::date

但是,有没有一种方法可以在不显式类型转换的情况下实现这一点?

最佳答案

您可以通过从目标表复制数据类型来避免显式转换:

UPDATE tbl
SET order_date = data.order_date
FROM (
VALUES
((NULL::tbl).order_date, (NULL::tbl).id)
(NULL, 100)
) data(order_date, id)
WHERE data.id = tbl.id;

添加的具有 NULL 值的虚拟行由 WHERE data.id = tbl.id 过滤。

有详细解释的相关回答:

关于postgresql - 使用来自 VALUES 表达式的输入更新列,无需显式类型转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52959766/

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