如何解决Snowflake case 语句返回错误而不是 ELSE 子句中指定的值
我需要检查表中是否已经存在一个或多个字段,以便我可以使用它们执行 merge into
语句。
我试过了:
select sat_sector_hkey,CASE
WHEN EXISTS(select id from hub_sector)
THEN (MERGE INTO ...)
END AS id
from sat_sector;
为了测试,我只使用了一个 case
语句,并将 merge into
替换为 THEN...ELSE
值:
SELECT sat_sector_hkey,CASE
WHEN EXISTS(select id from hub_sector)
THEN '1'
ELSE ''
END AS id
FROM sat_sector;
当该字段不存在时,查询返回错误而不是''
:
SQL 编译错误:位置 23 处的第 3 行错误标识符无效 '身份证'
我正在使用 CASE
,因为我需要检查列是否存在,因为我不知道它是否存在,因为我们的数据来自多个来源的某些技术细节。>
解决方法
试试这个:
- 用整行构造一个对象。
- 测试构造的对象是否具有“ID”的数据。
create or replace temp table maybe_id
as
select 1 x,2 id;
select *,case
when object_construct(a.*):ID is not null
then '1'
else ''
end as id
from maybe_id a
;
对我有用 - 当列 id 有数据时它给出 1
,当该列不存在于表中时给出 ``。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。