hive – 字符串string和bigint类型的坑

1、string = bigint (假设)

person 表数据:

id:stringname72315*49aa72315*48bb

spc 表数据:

id:bigintmodify_user_id:bigint172315****49

SELECT person.id , person.name , spc.modify_user_id, spc.id as spc_id ,cast(person.id as string) as aaa, cast(spc.modify_user_id as string)   as bbb
from  spc
join  person on person.id = spc.modify_user_id;

2、bigint = string (假设)

person 表数据:

id:bigintname:string72315*49aa72315*48bb

spc 表数据:

id:stringmodify_user_id:string172315****49

SELECT person.id , person.name , spc.modify_user_id, spc.id as spc_id ,cast(person.id as string) as aaa, cast(spc.modify_user_id as string)   as bbb
from  spc
join  person on person.id = spc.modify_user_id;

综上所述,以上sql会输出两条记录,
原因:bigint和string比较时会隐式地都转换成double,java中double的精度只有15-16位(double可以精确的表示小于2^52=4503599627370496的数字)。当数字超过精度的时候就会比较不准确,出现上面描述的现象。

Original: https://blog.csdn.net/a123147abc/article/details/125218377
Author: cg6
Title: hive – 字符串string和bigint类型的坑

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/818037/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球