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

你可能感兴趣的:(hive,hive,hadoop,数据仓库)