这是我昨天提出的问题的扩展: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?例如,如果:
然后将CAST Column2作为BIGINT,然后执行比较。
隐式发布是个好主意:
CASE
WHEN Column1 <=> cast(Column2 as bigint) THEN 0
ELSE 1
END
如果无法强制转换,则强制转换的结果为NULL。