【问题标题】:null column NOT IN list of strings strange results空列不在字符串列表中奇怪的结果
【发布时间】:2022-06-12 21:03:03
【问题描述】:

使用 spark SQL 语句时,我得到了奇怪的结果,例如:

select * from mytab where somecol NOT IN ('ABC','DEF')

如果我将 somecol 设置为 ABC,它不会返回任何内容。如果我将它设置为 XXX,它会返回一行。

但是,如果我在 CSV 数据中将该列留空,例如 ,(因此该值被读取为 null),它仍然不会返回任何内容,即使 null 不在值列表中。

即使重写为 NOT(somecol IN ('ABC','DEF')),情况仍然如此。

我觉得这与 null 和字符串之间的比较有关,但我不确定如何处理以 IN 或 NOT IN 子句结尾的 null 列值。

我需要先将它们转换为空字符串吗?

【问题讨论】:

    标签: apache-spark apache-spark-sql


    【解决方案1】:

    您可以在查询中对空值进行显式检查,因为空值比较在 spark 详细信息中返回未知 here

    select * from mytab where somecol NOT IN ('ABC','DEF') or somecol is null
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多