Hive中rlike,like,not like区别与使用详解

本文深入解析SQL中Like和Rlike操作符的使用方法,包括语法规则、操作类型及使用场景。通过实例演示,帮助读者理解两种操作符在字符串匹配上的区别,如简单字符匹配与正则表达式匹配的不同,以及如何正确使用Not Like和Not Rlike进行否定匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.like的使用详解
 1.语法规则:

    1.A like B只能使用简单匹配符号 _%,”_”表示任意单个字符,字符”%”表示任意数量的字符

     2.like的匹配是按字符逐一匹配的,使用B从A的第一个字符开始匹配,所以即使有一个字符不同都不行。
2.操作类型: strings
3.使用描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合表达式B  的正则语法,则为TRUE;否则为FALSE。LIKE主要进行简单正则匹配。
4.案例演示:'foobar' LIKE 'foo'的值为FALSE,而'foobar' LIKE 'foo___'的值为TRUE, 'foobar' LIKE 'foo%'的值为TRUE。要转义%,请使用\(%匹配一个%字符)。如果数据包含分号,你想匹配它,则需要转义,像'a\;b'
5.注意事项:否定比较时候用NOT A LIKE B(使用A NOT LIIKE B也可以),结果与like的结果时相对的。
 

hive>select 1 from t_fin_demo where 'abcde'  like 'abc'; --匹配成功
        1
hive>select 1 from t_fin_demo where 'abcde' like 'b'  --匹配失败,左边第一个字母是a
hive> select 1 from t_fin_demo where 'football' like 'foot%';
        1
hive> select 1 from   t_fin_demo where 'football' like 'foot____';
        1

2. RLIKE比较符,
1.语法规则:

    A RLIKE B ,B中的表达式可以使用JAVA中全部正则表达式,具体正则规则参考java,或者其他标准正则语法。
2.操作类型: strings
3.使用描述: 如果字符串A或者字符串B为NULL,则返回NULL;如果字符串A符合JAVA正则表达式B的正则语法,则为TRUE;否则为FALSE。
 

举例:
hive> select 1 from t_fin_demo where 'footbar’ rlike '^f.*r$’;
        1
 
hive > select 1 from t_fin_demo where 'foobar' rlike 'foo' --等价于;'foobar' rlike '^f.*r$'
        1
注意:判断一个字符串是否全为数字:
hive>select 1 from t_fin_demo  where '123456' rlike '^\\d+$';
        1
hive> select 1 from t_fin_demo  where '123456aa' rlike '^\\d+$';

3.NOT A LIKE B 与 A not like B

  1. not..like是like的否定用法,如果like匹配结果时true,则not..like的匹配结果时false,反之也是结果也是相对

hive> select 1 from t_fin_demo  where NOT 'football' like 'fff%';
        1
hive>select 1 from t_fin_demo where 'football' not  like 'fff%';
        1
hive> select 1 from t_fin_demo where 'football'  like 'fff%';

4.关于like与rlike,not like,like not的使用对比总结


   1.Rlike功能和like功能一致,只是like是后面只支持简单表达式匹配(_%),而rlike则支持标准正则表达式语法。所以如果正则表达式使用熟练的话,建议使用rlike,功能更加强大。所有的like匹配都可以被替换成rlike。反之,则不行。注意事项:like是从头逐一字符匹配的,但是rlike则不是。
 

hive> select   ('foobar' like 'oo') from t;--like从头匹配的
false
 
hive> select   ('foobar' rlike 'oo') from t; --rlike使用正则,不是从头匹配
true
 

2. NOT A LIKE B是LIKE的结果否定,如果like匹配结果时true,则not..like的匹配结果时false,反之也是结果也是相对。实际中也可以使用 A NOT LIKE B,也是LIKE的否定,与 NOT A LIKE B一样

   3.同理NOT RLIKE 的使用,也是NOT  A  RLIKE  B是对RLIKE的否定。
--------------------- 
作者:牛大财有大才 
来源:优快云 
原文:https://blog.youkuaiyun.com/qq_26442553/article/details/79452221 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值