我们先看一下这几个sql在hive中的返回值:
- hive中整数默认给int类型
- 带有小数位的给double类型
- 可以通过cast(num as decimal(n,m)) 指定数字类型
- int类型是最弱的类型,它和其他两个操作后会被转换
- double是最强的类型,和其他两个类型操作时会全部转换成dluble类型
- 使用double运算时可能会导致精度丢失,如对精度要求较高,建议全都换成decimal类型之后再做操作。
select cast('0.00407' as decimal(18,6))*2500 --10.175
select cast('0.00407' as decimal(18,6))*cast(2500 as decimal(18,2)) --10.175
select cast('0.00407'