在 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?