Hive在过滤条件下不工作

zujrkrfu  于 2021-06-27  发布在  Hive
关注(0)|答案(1)|浏览(437)

我在带有case-when子句的配置单元中遇到一个筛选器条件问题。以下是声明和错误:
声明:

select day 
from db.tableName 
where case when length(day) <> '19' then substr(day,1,19) else day end

错误:
org.apache.spark.sql.analysisexception:筛选器表达式“case when(not length(tablename。 day )='19')然后是子字符串(tablename。 day ,1,19)else表名。 day 字符串类型的“end”不是布尔值。;;
如果我把case子句放进去 select 子句中,语句运行良好,但放入条件创建所述错误的位置。虽然我捕捉到的错误来自 Zeppelin 但同样的错误字符串类型不是布尔型是对的 Beeline 也。
关于这个问题有什么建议吗?

xxslljrj

xxslljrj1#

你的语法错了。这里不必使用where子句。
尝试以下操作:

select case 
      when length(day) <> '19' then substr(day,1,19) 
      else day 
      end
      from db.tableName;

相关问题