0


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 --过滤出能关联上的

本文转载自: https://blog.csdn.net/index_test/article/details/126682062
版权归原作者 奔跑者-辉 所有, 如有侵权,请联系我们删除。

“hive中字符串查找函数 instr 和 locate”的评论:

还没有评论