我们先看一下这几个sql在hive中的返回值:
背景:
在实际hive脚本的测试中,常规的一些sql和mysal类似,那么在测试过程中我们要对使用的每个方法的函数或者引入外部jar
的一些函数有所了解,解读sql含义的时候也需要更加仔细耐心。对于一些比较复杂的sql来讲,我们只能进行sql的拆解然后
对每种类型的数据进行场景覆盖,并且对于输入和输出的结果进行比较,但是对于一些隐藏性的问题,我们还是很难覆盖到的
,因此举列子说明一下在对于一些金额或者对于精度要求高的情况下,double和decimal 精度差异作为讨论。
- 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(1