条件包含 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的主要内容,如果未能解决你的问题,请参考以下文章