hive:函数:关系函数 / 比较函数

等值比较: =

语法:A=B。如果表达式A与表达式B相等,则为TRUE;否则为FALSE

不等值比较: <>

语法: A <> B。如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A与表达式B不相等,则为TRUE;否则为FALSE

小于比较: <

语法: A < B。 如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于表达式B,则为TRUE;否则为FALSE

小于等于比较: <=

语法: A <= B。如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A小于或者等于表达式B,则为TRUE;否则为FALSE

大于等于比较: >=

语法: A >= B。如果表达式A为NULL,或者表达式B为NULL,返回NULL;如果表达式A大于或者等于表达式B,则为TRUE;否则为FALSE

空值判断: IS NULL

语法: A IS NULL。如果表达式A的值为NULL,则为TRUE;否则为FALSE

非空判断: IS NOT NULL

语法: A IS NOT NULL。 如果表达式A的值为NULL,则为FALSE;否则为TRUE

LIKE比较: LIKE

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

举例:

select * from tmp.csv_t1 where a like 'A%' --能够匹配以A开头的所有公司名
结果:
AEON信息系统集成(杭州)有限公司
ALCOElECTRONICSLTD
AVEPOINT(北京)科技有限公司
select * from tmp.csv_t1 where a like '%(%' --能够匹配包含中文括号的公司名

返回:
AEON信息系统集成(杭州)有限公司
AVEPOINT(北京)科技有限公司
埃摩森网络科技(北京)有限公司
select a from tmp.csv_t1 where a like 'A_E%' --字符”_”表示任意单个字符
返回:
AVEPOINT(北京)科技有限公司
select a from tmp.csv_t1 where a like '%V_P%' --而字符”%”表示任意数量的字符
返回:
AVEPOINT(北京)科技有限公司
select * from dw.topic_order where partition_pay_date = '2016-04-22' and client_type like ‘ip%’ ##能够匹配以ip开头的所有字符串

注意:对特殊字符进行转译时,注意要使用两个反斜杠\。

JAVA的LIKE/REGEXP操作: RLIKE/REGEXP

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

举例:select * from dw.topic_order where partition_pay_date = '2016-04-22' and client_type rlike/regexp '^android.*'

注意:通配符‘%’在rlike/regexp函数中,只能匹配一个'%'字符,’_‘也只能匹配一个’_‘字符。例如:

select * from dw.topic_order where partition_pay_date = '2016-04-22' and client_type regexp 'ip%' ##只能匹配ip%这个字符串

参考:https://baijiahao.baidu.com/s?id=1613382585734336695&wfr=spider&for=pc

猜你喜欢

转载自blog.csdn.net/weixin_38750084/article/details/95086092