SQL技巧中级系列①——字符串函数的使用

本文是SQL技巧中级系列的第一篇,详细介绍了包括length、reverse、concat、concat_ws、substr、capitalize等在内的字符串函数用法,涵盖了字符串长度、反转、连接、截取、大小写转换、去空格及正则表达式操作。通过实例讲解,帮助读者深入理解并掌握这些函数在实际数据分析中的应用。

SQL系列目录(文末有礼物相送):
SQL技巧初级系列①—建表/更新表/删除表
SQL技巧初级系列②—聚合和排序(group by,having,order by)
SQL技巧初级系列③——数据拼接(集合运算union和列连接join)
SQL技巧中级系列②——日期函数的使用
SQL技巧高级系列①——窗口分析函数的使用
SQL技巧高级系列②——聚合函数和CASE WHEN的使用
Hive Sql 性能优化——看这一篇就够啦!

1. 字符串长度函数:length
语法: length(string A)
返回值: int
说明:返回字符串A的长度

hive> select length('abcedfg') from lxw_dual, 结果为7

hive> select userid where length(deviceid) <>0, 筛选出统计到设备ID的用户ID

2. 字符串反转函数:reverse
语法: reverse(string A)
返回值: string
说明:返回字符串A的反转结果

hive> select reverse(abcedfg’) from lxw_dual;
gfdecba

3. 字符串连接函数
①:concat

语法: concat(string A, string B…)
返回值: string
说明:返回输入字符串连接后的结果,支持随意个输入字符串

hive> select concat(‘abc’,'def’,'gh’) from lxw_dual;
abcdefgh

②:concat_ws
语法: concat_ws(string SEP, string A, string B…)
返回值: string
说明:返回输入字符串连接后的结果。SEP表示各个字符串间的分隔符

hive> select concat_ws(',','abc','def','gh') from lxw_dual;
abc,def,gh

4. 字符串截取函数:substr,substring
语法: substr(string A, int start,int len),substring(string A, int start,int len)
返回值: string
说明:返回字符串A从start位置开始,长度为len的字符串, 第2个数字是截取的长度,忽略则默认取至结尾,负数则是从右边开始数,-1代表取最后一个位置,-2代表右边第2个位置

hive> select substr('abcde',3) from lxw_dual;
cde
hive> select substring('abcde',3,2) from lxw_dual;
cd
hive>  selectsubstr('abcde',-1) from lxw_dual; 
e

5、字符串大小写函数:capitalize,title,upper,lower
语法: upper(string A) ucase(string A)
返回值: string
说明:返回字符串的首字母大写,字符串每个单词首字母大写,全部大写,全部小写

hive> select  capitalize('good blue sky') from a
Good blue sky
hive> select title('good blue sky') from a
Good Blue Sky
 hive> select upper('good blue sky') from a
GOOD BLUE SKY
hive> select lower('good blue sky') from a
good blue sky

6. 去空格函数:trim,ltrim,rtrim
语法: trim(string A)
返回值: string
说明:去除字符串两边的,左边的,右边的空格

hive> select trim('  abc  ') from lxw_dual;
abc

7、 正则表达式替换函数:regexp_replace
语法: regexp_replace(1,2,3,4,5,6)
返回值: string
说明:1为要替换的字符串,2是要替换的内容,3是替换后的内容,4是从哪里开始,5是替换多少次,6是是否区分大小写

hive> select regexp_replace('foobar', 'o', '',2,1) from lxw_dual;
fobar

8. 正则表达式解析函数:regexp_extract
语法: regexp_extract(string subject, string pattern, int index)
返回值: string
说明:将字符串subject依照pattern 正则表达式的规则拆分。返回index指定的字符。

hive> select regexp_extract('foothebar', 'foo(.*?)(bar)', 1) fromlxw_dual;
the
hive> select regexp_extract('foothebar', 'foo(.*?)(bar)', 2) from lxw_dual;
bar

9. 正则表达式截取:regexp_substr
语法: regexp_substr(str, pattern, position, occurrence, modifier)
str:待分割的字符串或者字段值;
pattern:匹配的正则表达式,pattern = ‘[^___]+’,下划线的内容就是需要分割的字符;
position:匹配的起始位置(默认为1);
occurrence:取第几个匹配的字符串(默认为1);
modifier :是否区分大小写,‘i’不区分大小写,‘c’区分大小写(默认为‘c’)

hive> select  regexp_substr('hello world!', '[^o]+', 1, 1, 'i') from a
 hell

10、切割字符串函数: split
语法: split(string str, stringpat)
返回值: array
说明: 依照pat字符串切割str,会返回切割后的字符串数组
举例:

hive> select split('abtcdtef','t') from lxw_dual;
["ab","cd","ef"]

11. 集合查找函数:find_in_set
语法: find_in_set(string str, string strList)
返回值: int
说明: 返回str在strlist第一次出现的位置。strlist是用逗号切割的字符串。假设没有找该str字符,则返回0

hive> select find_in_set('ab','ef,ab,de') from lxw_dual;
2
hive> select find_in_set('at','ef,ab,de') from lxw_dual;
0

本人互联网数据分析师,目前已出ExcelSQLPandasMatplotlibSeaborn机器学习统计学个性推荐关联算法工作总结系列。


微信搜索并关注 " 数据小斑马" 公众号,回复“sql”就可以免费领取下方sql必知必会、sql基础教程等9本sql入门到精通9本书籍

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值