大数据之HIVE入门(十六)
hive中的数据类型转换--cast函数使用
HIVE中的类型转换分为隐式转换和显式转换。
隐式转换是指hive各兼容数据类型之间的转换,如TINYINT,SMALLINT,INT,BIGINT都可以隐式地转换成一个范围更大的类型等。
显式转换就是指用cast进行强制转换类型,CAST的语法为cast(value AS TYPE)。
如cast( col as bigint) cast(col as string)等等。当然我们也要合理地进行显式转换,否则会出现不可预料的结果。
在实际使用中使用强制转换的场景比较多,如在某个表中的要计算a,b两列的和,但一列中有值为null的情况,就需要处理;再如在计算数据精度要求比较高时,可以将整型转成decimal,这点在计算收入汇率转换 时中经常用到。select cast(a as bigint)+cast(b as bigint) as total from tbl_test; select sum(cast(price as decimal(18,6))) from tbl_test;
下表为各类型允许的隐式转换:true代表可以转换,false代表不能转换
void
boolean
tinyint
smallint
int
bigint
float
double
decimal
string
varchar
timestamp
date
binary
void to
true
true
true
true
true
true
true
true
true
true
true
true
true
true
boolean to
false
true
false
false
false
false
false
false
false
false
false
false
false
false
tinyint to
false
false
true
true
true
true
true
true
true
true
true
false
false
false
smallint to
false
false
false
true
true
true
true
true
true
true
true
false
false
false
int to
false
false
false
false
true
true
true
true
true
true
true
false
false
false
bigint to
false
false
false
false
false
true
true
true
true
true
true
false
false
false
float to
false
false
false
false
false
false
true
true
true
true
true
false
false
false
double to
false
false
false
false
false
false
false
true
true
true
true
false
false
false
decimal to
false
false
false
false
false
false
false
false
true
true
true
false
false
false
string to
false
false
false
false
false
false
false
true
true
true
true
false
false
false
varchar to
false
false
false
false
false
false
false
true
true
true
true
false
false
false
timestamp to
false
false
false
false
false
false
false
false
false
true
true
true
false
false
date to
false
false
false
false
false
false
false
false
false
true
true
false
true
false
binary to
false
false
false
false
false
false
false
false
false
false
false
false
false
true