字符串的查找,数据开发过程中使用比较频繁。复杂的字符串查找,可以用正则表达式来解决,这个在之前的文章中,也有积累过,但是不是每一次的字符串查找都需要用正则表达式,因为正则表达式的规则还是比较难理解,对于初学者或者是刚开始做数据开发工作的小伙伴来说,还是比较复杂的。
今天,记录的这几个,简单易懂且常用的字符串查找函数,供各位小伙伴在数据开发的过程中可以学习使用。
一、like
1,语法格式:
A like B
2,语法释义:
表示能否用一个字符串 B 去完全匹配另一个字符串A 的内容,换句话说能否用 B 这个表达式去表示另一个字符串A 的全部内容
3,参数释义:
like的匹配是按字符逐一匹配的,使用B从A的第一个字符开始匹配,所以即使有一个字符不同都不行。
4,语法规则:
B只能使用简单匹配符号 和%,””表示任意单个字符,字符”%”表示任意数量的字符
5,示例SQL:
select * from test.test_data ;
SELECT * FROM test.test_data
WHERE 1=1 AND age LIKE '2%';
6,运行结果:
7,注意:
(1)除了is null ,is not null,其它的关系运算符只要碰到null值出现,结果都是返回NULL,而不是TRUE/FALSE。
示例SQL:
select null like '%';
select '2' like null ;
运行结果:
null
null
(2)like在模糊查询的时候,类似‘%2%’,要转义%,请使用%匹配一个%字符,无法用\,所以需要用concate()函数将%拼接上去,
示例:like concat("%","str","%")
二、instr()函数
1,语法格式:
instr(str,substr)
2,语法释义:
instr函数返回字符串str中子字符串substr第一次出现的位置,其中第一字符的位置是1,如果 str不含substr返回0,不可能返回负数。
3,参数释义:
str:需要被定位的字符串,
substr:待定位的字符串
4,示例SQL
SELECT instr('xiaohua','hua');
SELECT instr('xiaohua','jack')
5,运行结果:
5
0
三、find_in_set()
1,语法格式:
find_in_set(string str, string strList)
2,语法释义:
返回str在strlist第一次出现的位置,如果没有找该str字符,则返回0
3,参数释义:
string str:待定位的字符串
string strList:被定位的字符串集合,每一个字符串用‘,’隔开
4,示例SQL:
select find_in_set('xiaohua','tom,jack,rose,xiaohua');
select find_in_set('mark','tom,jack,rose,xiaohua')
5,运行结果:
4
0
字符串的查找函数,有时候单独使用,有时候也需要和别的函数配合使用,其实hive的函数都是这样,get到每一个函数的用法,在拿到需求的时候,结果不同函数的功能去选择,事半功倍。