Snowflake中如何基于CASE语句结果进行条件判断?
Snowflake中判断CASE结果是否等于特定值的可行方案
你的需求完全可以实现,问题出在原代码的字符串引用方式上,Snowflake里字符串常量需要用单引号包裹,而非双引号(双引号用于引用标识符,比如列名、表名)。
修正后的代码如下:
SELECT IFF( (CASE WHEN SUBJECT = '' OR SUBJECT IS NULL THEN PROJECT_TYPE WHEN DESCRIPTION != '.' THEN CONCAT(PROJECT_TYPE, ' ', DESCRIPTION) ELSE DESCRIPTION END) = 'some value', 'yes', 'no') FROM YOUR_TABLE;
关键注意事项:
- 所有字符串常量(包括
'some value'、'yes'、'no')必须用单引号包裹,双引号会被Snowflake识别为对象名称,导致语法错误。 - 确保CASE语句返回的结果类型和
'some value'的类型一致,比如如果PROJECT_TYPE是数值类型,需要先转换为字符串(用TO_STRING()函数),否则会出现类型不匹配的错误。示例如下:SELECT IFF( (CASE WHEN SUBJECT = '' OR SUBJECT IS NULL THEN TO_STRING(PROJECT_TYPE) WHEN DESCRIPTION != '.' THEN CONCAT(TO_STRING(PROJECT_TYPE), ' ', DESCRIPTION) ELSE DESCRIPTION END) = 'some value', 'yes', 'no') FROM YOUR_TABLE; - 替换代码中的
TABLE为实际表名,Snowflake中TABLE是关键字,不能直接作为表名使用。
内容的提问来源于stack exchange,提问作者Brad
相关产品推荐
相关产品推荐

