hive中字符串查找函数 instr 和 locate

instr( )

字符串查找函数: instr

语法: instr(string str, string substr)                                                                   -- hive语法 

         instr( string str, string substr [, bigint position [, bingint occurrence ] ] )  -- impala语法

返回值: int

说明: 返回字符串 substr 在 str 中 首次出现的位置 ,找不到返回0 。

instr(sourceString , destString , start , appearPosition) 

instr('源字符串' , '目标字符串' , '开始位置' , '第几次出现')

sourceString代表源字符串; 

destString   代表要从源字符串中查找的子串; 

① start代表查找的开始位置,这个参数可选的,默认为1; 

② appearPosition代表想从源字符中查找出第几次出现的destString,这个参数也是可选的,默认为1 

③ 如果start的值为负数(最右侧下标为-1),则代表从右往左进行查找,但是位置数据仍然从左向右计算。
 
④ 返回值为:查找到的字符串的位置。如果没有查找到,返回0。

举例:

select instr("abcde",'b') , instr('abcdf','df') from test;
> 2   4 


select instr('abcd','a',1,1) , instr('abcd','c',1,1) , instr('abcd','e',1,1) from test ;
> 1   3   0 
select 
 instr('abcd','c',1,1)       
,instr('abcdctc','c',1,2)    
,instr('abcdctc','c',1,3)    
,instr('abcdctc','c',-1,3)   
,instr('abcdctc','c',-1,2)   
,instr('abcdctc','c',-2,3)   
from test;
>
3  5  7  3  5  0

locate( )

字符串查找函数: locate

语法: locate(string substr, string str[, int pos])

返回值: int

说明: 返回字符串 substr 在 str 中从 pos 后查找 , 首次出现的位置,找不到返回0 。

举例:

select locate('uzi','Rnguzi') , locate('uzi','RngUzi') from test;
>
4   0

select locate('a','abcd') , locate('a','abcda',2) , locate('b','abcd') , locate('f','abcd') , locate('20','222002') from test;
>
1   5   2   0   3

可用于模糊匹配 join 时

select 
  a.*,b.*
from 
(select * from tb1 ) as a
join 
(select * from tb2 ) as b on 1= 1 
where locate(a.city_name,b.adress)>0 --过滤出能关联上的

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值