栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

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

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

在第一个示例中,您为语句提供了一个 尚未输入类型的 NULL

INSERT

在第二个示例中,您较早一步(在CTE中)提供NULL,则必须键入表达式并为其指定type

unknown
。对于其他
常量

(例如数字常量
123
:),Postgres可以派生更合适的默认数据类型,但NULL(或字符串文字
'foo'
)可以是 任何东西
。并且在
unknown
和之间没有定义类型转换
json


在CTE中将NULL强制转换为正确的数据类型可以避免该问题(如您现在所知)。
或者

text
为时已晚,在铸造链中用作垫脚石。一切都可以投射到/投射出来
text

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

作品:

SELECt NULL::json;

失败:

SELECT new_data::jsonFROM  (SELECt NULL AS new_data) t;

再次工作:

SELECT new_dataFROM  (SELECt NULL::json AS new_data) t;

或者:

SELECT new_data::text::jsonFROM  (SELECT NULL AS new_data) t;


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/614503.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号