Hive的原子資料型別是可以進行隱式轉換的,類似於Java的型別轉換,例如某表示式使用INT型別,TINYINT會自動轉換為INT型別,但是Hive不會進行反向轉化,例如,某表示式使用TINYINT型別,INT不會自動轉換為TINYINT型別,它會返回錯誤,除非使用CAST操作。
-
隱式型別轉換規則
(1)任何整數型別都可以隱式的轉換為一個範圍更廣的型別,如TINYINT可以轉為INT,INT可以轉換為BIGINT.
(2)所有整數型別,FLOAT和STRING型別都可以隱式的轉換為DOUBLE.
(3)TINYINT,SMALLINT,INT都可以轉換為FLOAT (4)BOOLEAN型別不可以轉換為任何其他的型別
-
可以使用CAST操作顯示進行資料型別的轉換
例如CAST('1'AS INT)將把字串'1'轉換成整數1;如果強制型別轉換失敗,如執行CAST('X' AS INT),表示式返回空值NULL.
0: jdbc:hive2://hadoop101:10000> select '1'+2,cast('1' as int) +2;
+------+------+--+
| _c0 | _c1 |
+------+------+--+
| 3.0 | 3 |
+------+------+--+
1 row selected (2.425 seconds)
複製程式碼