hive 中的 关系运算

来源:互联网 发布:大数据时代保险变革研 编辑:程序博客网 时间:2024/06/02 06:05

1. 等值比较: =

         语法:A=B

         操作类型:所有基本类型

         描述: 如果表达式A与表达式B相等,则为TRUE;否则为FALSE

         举例:

         hive>select 1 from lxw_dual where 1=1;

         1

2. 不等值比较: <>

         语法: A <> B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A与表达式B不相等,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 1 <> 2;

1

注意

由于在通常得SQL写法中不等于也可以这样写 != 。但在hive中,当一个string类型和int类型比较的时候会出现问题。

数字和数字类型用 可以用 != 
比较:

hive> select * from t_pvorder where 1 != 1 and start_date=20130306 limit 1;                   OKTime taken: 0.079 seconds

带引号的数字和数字类型 可以用!= 比较: 

hive> select * from t_pvorder where "136258563267" != 0 and start_date=20130306 limit 1;    OK1323499396180741        13437046875509ec        0       102213  100002  01      -1      2013-03-06 20:59:07     1362574747440zW4        20130306Time taken: 0.169 seconds

带引号的数字和带引号数字类型 可以用 != 比较:

hive> select * from t_pvorder where "136258563267" != "0" and start_date=20130306 limit 1;OK1323499396180741        13437046875509ec        0       102213  100002  01      -1      2013-03-06 20:59:07     1362574747440zW4        20130306Time taken: 0.129 seconds

字符串和数字类型 不可以用 !=比较:

hive> select * from t_pvorder where 0 != "1362585632671uFu" and start_date=20130306 limit 1;Total MapReduce jobs = 1Launching Job 1 out of 1Number of reduce tasks is set to 0 since there's no reduce operator//发起mapreduce   查不出结果....

字符串和数字类型 不可以用 <> 比较:

hive> select * from t_pvorder where 0 <> "1362585632671uFu" and start_date=20130306 limit 1;Total MapReduce jobs = 1Launching Job 1 out of 1Number of reduce tasks is set to 0 since there's no reduce operator//发起mapreduce   查不出结果....

总之,用不等于比较的时候两者的字段类型尽量保持一致。

3. 小于比较: <

         语法: A < B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于表达式B,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 1 < 2;

1

 

4. 小于等于比较: <=

语法: A <= B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于或者等于表达式B,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 1 <= 1;

1

5. 大于比较: >

语法: A > B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于表达式B,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 2 > 1;

1

 

6. 大于等于比较: >=

语法: A >= B

操作类型: 所有基本类型

描述: 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于或者等于表达式B,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where 1 >= 1;

1

 

注意:String的比较要注意(常用的时间比较可以先to_date之后再比较)

hive> select* from lxw_dual;

OK

201111120900:00:00     2011111209

 

hive> selecta,b,a<b,a>b,a=b from lxw_dual;

201111120900:00:00     2011111209      false  true    false

 

7. 空值判断: IS NULL

语法: A IS NULL

操作类型: 所有类型

描述: 如果表达式A的值为NULL,则为TRUE;否则为FALSE

举例:

hive> select1 from lxw_dual where null is null;

1

 

8. 非空判断: IS NOTNULL

语法: A IS NOT NULL

操作类型: 所有类型

描述: 如果表达式A的值为NULL,则为FALSE;否则为TRUE

举例:

hive> select1 from lxw_dual where 1 is not null;

1

 

9. LIKE比较: LIKE

语法: A LIKE B

操作类型: strings

描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合表达式B   的正则语法,则为TRUE;否则为FALSE。B中字符”_”表示任意单个字符,而字符”%”表示任意数量的字符。

举例:

hive> select1 from lxw_dual where 'football' like 'foot%';

1

hive> select1 from lxw_dual where 'football' like 'foot____';

1

注意:否定比较时候用NOT ALIKE B

hive> select1 from lxw_dual where NOT 'football' like 'fff%';

1

 

10. JAVA的LIKE操作: RLIKE

语法: A RLIKE B

操作类型: strings

描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE;否则为FALSE。

举例:

hive> select1 from lxw_dual where 'footbar’ rlike '^f.*r$’;

1

注意:判断一个字符串是否全为数字:

hive>select 1from lxw_dual where '123456' rlike '^\\d+$';

1

hive> select1 from lxw_dual where '123456aa' rlike '^\\d+$';

 

11. REGEXP操作: REGEXP

语法: A REGEXP B

操作类型: strings

描述: 功能与RLIKE相同

举例:

hive> select1 from lxw_dual where 'footbar' REGEXP '^f.*r$';

1

原创粉丝点击