您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

我有一个删除插入CTE,它以一种奇怪的方式失败了

我有一个删除插入CTE,它以一种奇怪的方式失败了

在第一个示例中,您为语句提供了一个 NULL INSERT

在第二个示例中,您较早一步(在CTE中)提供NULL,则必须键入表达式并为其指定type unkNown。对于其他 (例如数字常量123:),Postgres可以派生更合适的认数据类型,但NULL(或字符串文字'foo')可以是 任何东西 。并且在unkNown和之间没有定义类型转换json

在CTE中将NULL强制转换为正确的数据类型可以避免该问题(如您现在所知)。 或者text为时已晚,在铸造链中用作垫脚石。一切都可以投射到/投射出来text

您可以将演示简化为以下内容

作品:

SELECT NULL::json;

失败:

SELECT new_data::json
FROM  (SELECT NULL AS new_data) t;

再次工作:

SELECT new_data
FROM  (SELECT NULL::json AS new_data) t;

或者:

SELECT new_data::text::json
FROM  (SELECT NULL AS new_data) t;
其他 2022/1/1 18:40:15 有779人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶