Hive學習之型別轉化

萊布尼茲丶發表於2018-12-02

Hive的原子資料型別是可以進行隱式轉換的,類似於Java的型別轉換,例如某表示式使用INT型別,TINYINT會自動轉換為INT型別,但是Hive不會進行反向轉化,例如,某表示式使用TINYINT型別,INT不會自動轉換為TINYINT型別,它會返回錯誤,除非使用CAST操作。

  1. 隱式型別轉換規則

    (1)任何整數型別都可以隱式的轉換為一個範圍更廣的型別,如TINYINT可以轉為INT,INT可以轉換為BIGINT.

    (2)所有整數型別,FLOAT和STRING型別都可以隱式的轉換為DOUBLE.

    (3)TINYINT,SMALLINT,INT都可以轉換為FLOAT (4)BOOLEAN型別不可以轉換為任何其他的型別

  2. 可以使用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)
複製程式碼

相關文章