redshift:将空字符串更新为空

s71maibg  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(269)

有一个带有“列a”的红移表

column_a                       varchar(1000) null,

以下查询将以“null”字符串返回大量结果

select column_a from table where lower(column_a)='Null' limit 100;

但如果我这么做了

update table set column_a = NULL where lower(column_a)='';

我收到一条错误信息

Cannot insert a NULL value into column binhash

我是否可以将“null”字符串替换为null?谢谢

lymgl2op

lymgl2op1#

如果我不明白你的问题,请纠正我。
据我所知
你有这样的table吗-

create table dev.gp_test_20200731
(
name varchar(100) NOT NULL,
rolnum int ,
subject varchar(100) null
);

像这样的数据-

i、 我是这样插的-

('abc',01),
('cde',02,'chemistry'),
('def',03,'')

所以, rolnum = 1 ,有 subject 列为空-

select * from dev.gp_test_20200731 where subject is null


& rolnum = 3 ,有 subject 列组件 Empty String 或者 '' -

select * from dev.gp_test_20200731 where subject = ''


现在我正在上运行更新查询 rolnum=3 那就是 subject 列组件 empty string 。或者在您的情况下,它将是一个字符串“null”-

update dev.gp_test_20200731 set subject = null  where lower(subject) = ''

结果-

select * from dev.gp_test_20200731 where subject is null


我无法复制这个问题。

相关问题