提问人:bharathi m 提问时间:8/11/2023 最后编辑:bharathi m 更新时间:8/11/2023 访问量:64
SQL 中 boolean 类型的 boolean :“” 的 case 语句输入语法无效
case statement for boolean invalid input syntax for type boolean :"" in sql
问:
尝试将列从一个表 (table_temp) 插入到另一个表 (main_table),同时执行从表中转换列table_temp类型。
以下命令在 redshift 中运行。我得到这样的输出。
Boolean 类型:“”的输入语法无效
insert into main_table (
select
case
when id = 'null' then null
when id ='' then null
else id:: varchar(max)
end as id,
case
when date = 'null' then null
when date ='' then null
else date ::timestamp
end as date,
case when payment = 'null' then null
when payment ='' then null
when payment ='None' then null
else payment::double precision
end as payment,
case
when isdeleted = 'null' then null
when isdeleted ='' then null
else replace(replace( isdeleted ,'false','0'),'true','1')::int::boolean
end as isdeleted
from table_temp
);
答:
0赞
Isolated
8/11/2023
#1
该列中可能有其他值,例如“abcstring”。
如果要显示 true/false/null,那么这应该有效:
case
when isdeleted = 'null' then null
when isdeleted ='' then null
when isdeleted in ('true','false') then replace(replace(isdeleted ,'false','0'),'true','1')::boolean
end as isdeleted
如果要显示 1/0/null,那么这应该有效:
case
when isdeleted = 'null' then null
when isdeleted ='' then null
when isdeleted in ('true','false') then isdeleted::boolean
end as isdeleted
我不是 redshift 用户,因此您可能需要也可能不需要“else null”。在 Postgres 中,它按原样运行良好。既然我没有 Redshift 游乐场,那么也许这完全是错误的。在这种情况下,我可以删除此答案。
评论
0赞
bharathi m
8/11/2023
尝试了 true/false/null,但仍然出现相同的错误
评论