-1
当我使用蜂巢查询数据时遇到以下这种情况:当在HIVE中字符串被隐式转换为int时会发生什么?
select '6455983054544699410' = 6455983054544699395 ===> true
所以我想知道什么时候字符串隐式转换在蜂巢为int会发生什么?
谢谢。
当我使用蜂巢查询数据时遇到以下这种情况:当在HIVE中字符串被隐式转换为int时会发生什么?
select '6455983054544699410' = 6455983054544699395 ===> true
所以我想知道什么时候字符串隐式转换在蜂巢为int会发生什么?
谢谢。
双方正在转换为加倍
hive> select '6455983054544699410' = 6455983054544699395;
WARNING: Comparing a bigint and a string may result in a loss of precision.
OK
_c0
true
hive> select cast('6455983054544699410' as double) , cast (6455983054544699395 as double);
OK
_c0 _c1
6.4559830545446994E18 6.4559830545446994E18
// For now, if a bigint is going to be cast to a double throw an error or warning
if ((oiTypeInfo0.equals(TypeInfoFactory.stringTypeInfo) && oiTypeInfo1.equals(TypeInfoFactory.longTypeInfo)) ||
(oiTypeInfo0.equals(TypeInfoFactory.longTypeInfo) && oiTypeInfo1.equals(TypeInfoFactory.stringTypeInfo))) {
String error = StrictChecks.checkTypeSafety(conf);
if (error != null) throw new UDFArgumentException(error);
console.printError("WARNING: Comparing a bigint and a string may result in a loss of precision.");
} else if ((oiTypeInfo0.equals(TypeInfoFactory.doubleTypeInfo) && oiTypeInfo1.equals(TypeInfoFactory.longTypeInfo)) ||
(oiTypeInfo0.equals(TypeInfoFactory.longTypeInfo) && oiTypeInfo1.equals(TypeInfoFactory.doubleTypeInfo))) {
String error = StrictChecks.checkTypeSafety(conf);
if (error != null) throw new UDFArgumentException(error);
console.printError("WARNING: Comparing a bigint and a double may result in a loss of precision.");
}
太谢谢你了!现在我明白了! – nofucksay