HIVE科學計數法

2021-10-06 22:27:48 字數 2041 閱讀 2095

hive中數值型別可以和和字串型別string運算,其中字串為純數字型別,都轉為了浮點型別double.若字串不為純數字型別,計算結果則為null.

1、數值和數值 --> int

2、數值和數值型字元

3、數值和非純數字

union all中的子查詢要求相同的列數,對應字段型別相同或可以隱式轉化為同一種型別

hive中int , float , double這些數值型別在儲存大額度數字時,在前端展現上總是使用科學計數法來表示,其實無論是普通的表示方式還是科學計數法表示,只是乙個習慣問題,結果都是一樣的。

可是不能理解的是當把數值型別轉化成字串型別以後hive竟然把數值轉換成了科學計數法表示的字串而非數值本身的字串

參考1-hive中科學計數法

【坑】若是(1)-(3)正好同時出現,一步小心就會有有問題

有一張表create table test_table(bignumstr string)

(1)單獨執行下面sql語句

select 123456789101112; 123456789101112

select 123456789101112.0; 1.23456789101112e14 --或 123456789101112.0

select 123456789101111 union all select 123456789101112.0; 1.23456789101111e14 1.23456789101112e14 – 或 123456789101111.0 123456789101112.0

(2)單獨insert

insert into table test_table select 123456789101111; select * table test_table; 123456789101112

insert into table test_table select 123456789101112.0; select * table test_table; 1.23456789101112e14

(3)union all

insert overwrite table test_hjy select 123456789101111 union all select 123456789101112.0; select * table test_table; 1.23456789101111e14 1.23456789101112e14

(4)即使第乙個為string

select cast(123456789101111 as string) union all select 123456789101112.0; 1.23456789101111e14 1.23456789101112e14 – 或 123456789101111.0 123456789101112.0

insert overwrite table test_hjy select cast(123456789101111 as string) union all select 123456789101112.0; select * table test_table; 1.23456789101111e14 1.23456789101112e14

insert overwrite table test_hjy select cast(123456789101111 as string) union all select 1 * 『123456789101112』; select * table test_table; 1.23456789101111e14 1.23456789101112e14

原因在於hive在聯結union all時,可以進行隱式轉換,先都轉換為同一種型別,string可以轉換為double,見參考2.

hive轉換科學計數法

hive中的科學計數法如何轉換回數字,搜了半天終於找到了一篇好文章,這裡記錄轉換 為自己日後參考。自 case 處理非科學計數法表示的字串 when length regexp extract 字串 0 9 0 9 e 0 9 2 0 then 字串 處理整數 when length regexp ...

科學計數法

在做專案時發現乙個比較頭痛的問題,輸入法輸入金額android inputtype numberdecimal 控制項是可以輸入000.123的,為了獲取正確的輸入值可以使用下面方法,當輸入的資料很長時也不會被用科學計數法顯示 string str 000.123 bigdecimal bigdec...

hive 如何處理科學計數法

說明 hive中int float double這些數值型別在儲存大額度數字時,在前端展現上總是使用科學計數法來表示,這樣搞的挺煩。舉例說明 樣例資料 select lte drop rate from t table limit 10 輸出結果 5.0e 4 7.1e 4 5.41e 4 處理方案...