一.Hive內置算術運算符
1. 加法操作: +
語法: A + B
操作類型:所有數值類型
說明:返回A與B相加的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關係)。比如,int + int 一般結果爲int類型,而int + double 一般結果爲double類型
舉例:
hive> select 1 + 9 from t_fin_demo;
10
hive> create table t_fin_demo as select 1 + 1.2 fromt_fin_demo;
hive> describet_fin_demo;
_c0 double
2. 減法操作: -
語法: A – B
操作類型:所有數值類型
說明:返回A與B相減的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關係)。比如,int – int 一般結果爲int類型,而int – double 一般結果爲double類型
舉例:
hive> select 10 – 5 from t_fin_demo;
5
hive> create table t_fin_demo as select 5.6 – 4 from t_fin_demo;
hive> describe t_fin_demo;
_c0 double
3. 乘法操作: *
語法: A * B
操作類型:所有數值類型
說明:返回A與B相乘的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關係)。注意,如果A乘以B的結果超過默認結果類型的數值範圍,則需要通過cast將結果轉換成範圍更大的數值類型
舉例:
hive> select 40 * 5 from t_fin_demo;
200
4. 除法操作: /
語法: A / B
操作類型:所有數值類型
說明:返回A除以B的結果。結果的數值類型爲double
舉例:
hive> select 40 / 5 from t_fin_demo;
8.0
注意:hive中最高精度的數據類型是double,只精確到小數點後16位,在做除法運算的時候要特別注意
hive>select ceil(28.0/6.999999999999999999999) from t_fin_demo limit 1;
4
hive>select ceil(28.0/6.99999999999999) from t_fin_demo limit 1;
5
5. 取餘操作: %
語法: A % B
操作類型:所有數值類型
說明:返回A除以B的餘數。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關係)。
舉例:
hive> select 41 % 5 from t_fin_demo;
1
hive> select 8.4 % 4 from t_fin_demo;
0.40000000000000036
注意:精度在hive中是個很大的問題,類似這樣的操作最好通過round指定精度
hive> select round(8.4 % 4 , 2) from t_fin_demo;
0.4
6. 位與操作: &
語法: A & B
操作類型:所有數值類型
說明:返回A和B按位進行與操作的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關係)。
舉例:
hive> select 4 & 8 from t_fin_demo;
0
hive> select 6 & 4 from t_fin_demo;
4
7. 位或操作: |
語法: A | B
操作類型:所有數值類型
說明:返回A和B按位進行或操作的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關係)。
舉例:
hive> select 4 | 8 from t_fin_demo;
12
hive> select 6 | 8 from t_fin_demo;
14
8. 位異或操作: ^
語法: A ^ B
操作類型:所有數值類型
說明:返回A和B按位進行異或操作的結果。結果的數值類型等於A的類型和B的類型的最小父類型(詳見數據類型的繼承關係)。
舉例:
hive> select 4 ^ 8 from t_fin_demo;
12
hive> select 6 ^ 4 from t_fin_demo;
2
9.位取反操作: ~
語法: ~A
操作類型:所有數值類型
說明:返回A按位取反操作的結果。結果的數值類型等於A的類型。
舉例:
hive> select ~6 from t_fin_demo;
-7
hive> select ~4 from t_fin_demo;
-5
二.Hive內置邏輯運算符
A AND B |
boolean |
TRUE if both A and B are TRUE, otherwise FALSE |
A && B |
boolean |
Same as A AND B |
A OR B |
boolean |
TRUE if either A or B or both are TRUE, otherwise FALSE |
A || B |
boolean |
Same as A OR B |
NOT A |
boolean |
TRUE if A is FALSE, otherwise FALSE |
!A |
boolean |
Same as NOT A |
1. 邏輯與操作: AND
語法: A AND B
操作類型:boolean
說明:如果A和B均爲TRUE,則爲TRUE;否則爲FALSE。如果A爲NULL或B爲NULL,則爲NULL
舉例:
hive> select 1 from t_fin_demo where 1=1 and 2=2;
1
2. 邏輯或操作: OR
語法: A OR B
操作類型:boolean
說明:如果A爲TRUE,或者B爲TRUE,或者A和B均爲TRUE,則爲TRUE;否則爲FALSE
舉例:
hive> select 1 from t_fin_demo where 1=2 or 2=2;
1
3. 邏輯非操作: NOT
語法: NOT A
操作類型:boolean
說明:如果A爲FALSE,或者A爲NULL,則爲TRUE;否則爲FALSE
舉例:
hive> select 1 from t_fin_demo where not 1=2;
1