类型不同的字段直接作为on条件时的注意事项

文章目录

    • 1. 当两个表中表示相同含义的字段类型不同时,可以直接进行连接,但是有坑

1. 当两个表中表示相同含义的字段类型不同时,可以直接进行连接,但是有坑

案例,如果表A中的stu_id类型为bigint,而表B中的stu_id类型为string,都表示学号编号,当表A和表B通过stu_id进行join时,不需要进行类型转换即可直接进行条件比较,即下面的SQL可以正常得出结果。

select a.stu_id 
from a as r
join b as l
on r.stu_id = l.stu_id  

!!! note “”
在实际的计算过程中,是将string和bigint类型强制转换为double类型计算的。
但是需要注意的是,如果string和bigint中的数值太长时,转换为double时会损失精度,从而在计算时改变了原本的数值,造成计算不准确的问题。
正确的使用方法是将bigint类型的值使用cast显示转换成string,再进行连接。

你可能感兴趣的:(Hive,数据仓库)