使用cast()函数将十进制值转换为字符串会截断结果值,例如:
hive -e "select cast(cast('0.1629369395016511130907901977737025' as decimal(38,38)) as string)"
返回:
0.162936939501651113
如果十进制首先转换为 varchar ,然后再转换为字符串,则结果是正确的:
hive -e "select cast(cast(cast('0.1629369395016511130907901977737025' as decimal(38,38)) as varchar(38)) as string)"
返回:
0.1629369395016511130907901977737025
我使用Hive版本1.1.0-cdh5.7.0