为什么需要将NULL强制转换为列类型?
我有一个帮助程序,它为我生成一些代码以进行批量更新并生成如下所示的SQL: (活动字段和核心字段均为类型boolean) UPDATE fields as t set "active" = new_values."active","core" = new_values."core" FROM (values (true,NULL,3419), (false,NULL,3420) ) as new_values("active","core","id") WHERE new_values.id = t.id; 但是,它失败了: ERROR: column "core" is of type boolean but expression is of type text 我可以通过添加::booleannull 来使其正常工作,但这似乎很奇怪,为什么将NULL视为类型TEXT? 同样,转换起来有点棘手,因为它需要大量的代码重做才能知道它应该将NULL转换为哪种类型(列和值的列表当前是从一个简单的JSON对象数组自动生成的) 。 为什么这是必需的,并且有一个更优雅的解决方案,不需要生成的代码知道NULL的类型? 如果相关,我正在使用Node.JS上的续集来执行此操作,但在Postgres命令行客户端中也得到了相同的结果。