Hive CASE无法在过滤条件下工作

时间:2019-01-06 22:11:46

标签: hive apache-zeppelin

我在带有CASE WHEN子句的Hive中遇到过滤条件问题。以下是语句和错误:

声明:

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')THEN substring(tableName。day,1,19) ELSE tableName。字符串类型的day END'不是布尔值。;;

如果我将case子句放在select子句中,则该语句可以完美运行,但是放在条件会导致上述错误的地方。尽管我捕获的错误来自Zeppelin,但Beeline上的字符串类型错误也不是布尔值。

关于这个问题有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您的语法错误。您不必在这里使用WHERE子句。

尝试以下操作:

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