【发布时间】:2021-12-10 01:35:35
【问题描述】:
当尝试将数据插入雪花表时,不正确转换输入值的假定类型似乎可能会覆盖表创建命令提供的数据类型。例如,给定一个如下创建的表:
CREATE TABLE vctable (
itemA VARCHAR(8),
itemB VARCHAR(8)
);
以下命令失败:
INSERT INTO vctable (itemA, itemB) VALUES ('hi','ho'), (1,2);
ERROR: Numeric value 'hi' is not recognized
我预计此插入会失败,因为 second 记录的数据类型与表定义不匹配(正如预期的那样,如果我将第二条记录的元素转换为字符串,则插入成功)。但是错误表明失败是因为 Snowflake 无法将第一个(格式正确)记录中的“hi”转换为数值。就好像在调查了输入之后,Snowflake 决定覆盖表中声明的数据类型。为什么 Snowflake 试图从表定义中转换字符串 远离?
顺便说一句,如果插入被分成两个单独的语句,那么两个都可以工作。
【问题讨论】:
-
可能值得用 Snowflake Support 作为一个 bug 打开一张票。这可能与优化器如何评估操作顺序有关,但这并不重要为什么......它真的根本不应该抛出错误。我希望在这种情况下将数字隐式转换为 varchar。
标签: snowflake-cloud-data-platform