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/
转载文章受原作者版权保护。转载请注明原作者出处!