条件包含 IN 语句的 CASE 语句 redshift

Posted

技术标签:

【中文标题】条件包含 IN 语句的 CASE 语句 redshift【英文标题】:CASE statement where conditional includes an IN statement redshift 【发布时间】:2020-09-22 14:17:22 【问题描述】:
CASE 
   WHEN code IN ('FJS354', 'JDF334') 
      THEN 'Lower_form'
      ELSE 0 
END AS format

这会在 Redshift 中返回错误

整数的无效输入语法:“Lower_form”

我知道如果我将 'Lower_form' 更改为整数,它会起作用,但是我希望此列是一个字符串。有没有办法做到这一点?

【问题讨论】:

case 表达式的不同返回值必须具有匹配的数据类型。 char 和 int 不是。 也许你的查询会输出某种报告,但如果我是你,我只会做 CASE WHEN code in ('FJS354','JDF334') THEN 1 ELSE 0 END as Lower_form 。它使用的空间更少,效率更高。 【参考方案1】:

我希望此列是一个字符串。

case 表达式的所有分支必须返回相同的数据类型。您提供了两个数据类型不同的文字值(字符串与整数):数据库决定将它们都转换为整数 - 这不是您想要的。

R通过明确说明您要返回的数据类型来消除歧义。也就是说,将这个文字 0 变成一个字符串:

CASE WHEN code in ('FJS354','JDF334') 
    THEN 'Lower_form'
    ELSE '0' 
END as format

【讨论】:

以上是关于条件包含 IN 语句的 CASE 语句 redshift的主要内容,如果未能解决你的问题,请参考以下文章

SQL 中 where 条件中 in 后面 加 CASE WHEN 语句 报错

case条件语句的应用实践

Shell语法—— case 条件语句

Linux-条件判断式

shell case in语句

在 if 语句中使用 switch case