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

官方文档

在这里插入图片描述

like的使用详解

语法解释

select  A (not) LIKE B

1.表示是否可以用B完全匹配A的内容,返回结果是布尔类型(true或false)
2.操作类型是String,其中A是待验证的字符串,B是表达式,B中可以用简单的匹配符号(_,%等,_表示任意单个字符,%表示任意数量的字符)
3.like的匹配是按字符从左向右逐一匹配的,即使只有一个字符不同,也返回false;
4.A或B任意为null,则返回null值;
5.否定比较时候用NOT A LIKE B(使用A NOT LIIKE B也可以),结果与like的结果时相对的
示例

select 'abcde' like 'abc'; ---false
select 'abcde' like '_bc%'; ---true
select 'abcde' not like 'abc'; ---false
select 'abcde' like null; -----null

rlike的使用详解

语法解释

select  A (not) rLIKE B

1.A rlike B,表示b是否在A里面,而 A like B 表示B是否是A;
2.B中的表达式可以使用java中的正则表达式;
3.A或B任意为null,则返回null值
4.否定比较时候用NOT A RLIKE B(使用A NOT RLIIKE B也可以),结果与rlike的结果时相对的;
示例:

select 'football' rlike 'foo'; ---true
select 'football' rlike '^f\\D+l$'; ---true
select 'football' rlike '^f.*'; ---true
select 'football' rlike '.*l$'; ---true
select '123456' rlike '^\\d+$' ---true
select '123456' rlike '^1\\d{3,4}6$' ---true
select '123456' rlike '^1[0-9]{3,4}6$' ---true
select '12abc6' rlike '^12[a,b,c]{3,4}6$' --true
select '123456' not rlike '^1[0-9]{3,4}6$'  ---false
select null rlike '^12[a,b,c]{3,4}6$' ---null

regexp的使用详解

和rlike相同;
like,rlike ,regexp 等多用于where 条件判断中;
示例

select user ,name,phone from account where phone regexp '^156[0-9]{7,8}0$'; ---匹配电话号码156开头,0结尾的
select name from tmp.testregexp  WHERE name not REGEXP '[u0391-uFFE5]';  ----匹配name是纯中文(不含有英文和数字的)
select name  from tmp.testregexp  where name regexp '[\\u4E00-\\u9FFF]+'; ---匹配name中含有中文的(只要含有汉字都可以)
select name  from tmp.testregexp  where name not regexp '[\\u4E00-\\u9FFF]+'; ---匹配name中不含有中文的(含一个汉字都不可以)
select 
name 
from  (
select 
regexp_replace (trim(name),'\\n|\\t|\\s|\\r','') as name  
from tmp.testregexp) t 
where name regexp '[\\u4E00-\\u9FFF]+' ---先对name中换行符替换为空,然后匹配name中含有中文的(只要含有汉字都可以)
select name from tmp.testregexp where name regexp '文杰' ----匹配name中含有文杰两个字的,可能是陈文杰,可能是文杰李,可能是陈李文杰,也可能就是文杰
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值