等值比较: =
语法: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%这个字符串