字符串查找函数: 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(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 --过滤出能关联上的