在 Redshift 中将 null 插入整数类型列

Posted

技术标签:

【中文标题】在 Redshift 中将 null 插入整数类型列【英文标题】:Insert null to integer type column in Redshift 【发布时间】:2020-03-05 16:26:51 【问题描述】:

我正在尝试修改 Redshift 中的插入语句。我在表格末尾添加了一列。上一个最后一列是整数类型之一,我不需要在我的插入中处理它(到目前为止一直为空)。我可以以某种方式向它插入空值吗? 'NULL AS[...]' 表达式显然失败,并显示错误消息:

亚马逊无效操作:列“search_result_size”是整数类型,但表达式是文本类型;

另外,我会尝试在插入语句期间跳过此列,但我更喜欢每次都将其值声明为 null。我已经搜索了很长时间了,到目前为止还没有找到解决方案。任何想法都会非常受欢迎。

谢谢!

【问题讨论】:

只需使用null,例如INSERT INTO t(a, b) SELECT 1, null;。在其周围添加引号使其成为text 值。 【参考方案1】:

我实际上设法通过使用 CAST 解决了这个问题。所以,我做到了:

[...], CAST (NULL AS INTEGER) 作为 column_name, [...]

现在可以正常使用了。我相信它可以被认为是一种有效的方法。

【讨论】:

您不需要将 NULL 强制转换为整数。这是多余的。 NULL as column_name 表达式作为来自 Redshift 的文本处理,因此我必须将 Null 转换为 Integer 才能将其作为正确的数据类型接受。 您的完整陈述究竟是什么? "插入到您的表中选择 ....,作为 column_name 为空;"【参考方案2】:

使用null 关键字:

insert into the_table (col_1, col_2, col_3)
values (1, 2, null);

如果要更改现有行的值,则需要 UPDATE:

update the_table
    set the_column = null
where ...

【讨论】:

以上是关于在 Redshift 中将 null 插入整数类型列的主要内容,如果未能解决你的问题,请参考以下文章

在 Redshift 中将 MD5 输出转换为 32 位整数

如何在 Amazon Redshift 中将整数转换为位字符串?

如何在 AMAZON REDSHIFT 中将 userip 转换为整数

有没有办法在 AWS Redshift 中将 VARCHAR 转换为 DATE?

如何在 Redshift 中将 BIGINT 转换为 DATE?

Redshift 复制命令错误“溢出,列类型:整数”