我试图用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]错误:列“order_date”是date类型,但表达式是text类型
提示:您需要重写或强制转换表达式。
我可以通过显式地将NULL转换为date来解决这个问题,如下所示:
NULL::date
但是,有没有一种方法可以在没有显式类型转换的情况下实现这一点?
1条答案
按热度按时间bxjv4tth1#
您可以通过从目标表复制数据类型来避免显式强制转换:
这样,您就不必知道列数据类型。
具有
null
值的添加的虚拟行由WHERE data.id = tbl.id
过滤。相关答案及详细解释: