如何比较具有不同数据类型组的两列

问题描述 投票:0回答:1

这是我昨天提出的问题的扩展:How to handle potential data loss when performing comparisons across data types in different groups

在HIVE中,是否可以在SELECT子句内联的不同数据类型组中的两个列之间执行比较?

CASE 
    WHEN  Column1 <=> Column2 THEN 0 -- Error occurs here if data types are in different data type groups (i.e., BIGINT <=> STRING)
    ELSE 1
END

如果不可能,是否有变通办法来检索元数据并根据某些规则执行CAST?例如,如果:

  1. Column1是BIGINT
  2. Column2 IS STRING

然后将CAST Column2作为BIGINT,然后执行比较。

sql hadoop hive cloudera hive-metastore
1个回答
0
投票

隐式发布是个好主意:

CASE 
    WHEN  Column1 <=> cast(Column2 as bigint) THEN 0 
    ELSE 1
END

如果无法强制转换,则强制转换的结果为NULL。

© www.soinside.com 2019 - 2024. All rights reserved.