sql常见函数

本文主要归纳整理一些在实际的取数过程中所用到的函数,以供以后参考。

1.字符串提取函数

(1)字符串截取

select substring("2018-08-14 13:14:00",1,4) as year
,substring("2018-08-14 13:14:00",1,7) as month
,substring("2018-08-14 13:14:00",1,10) as day
--从字符串第2位开始截取,直到遇到']'结束.instr可以输出特定字符在字符串中位置
,substr('["key1":"value1","key2":"value2"]',2,instr('["key1":"value1","key2":"value2"]',']')-2) as result

输出结果如下所示:

(2)提取json字符串

select a.value2
,b.value1
,b.value3
from(select get_json_object('{"key1":"value1","key2":"value2","key3":"value3"}','$.key2') value2) a 
--批量提取json字符串中的value
LATERAL VIEW json_tuple('{"key1":"value1","key2":"value2","key3":"value3"}','key1','key3')b as value1,value3

输出结果如下图所示:

(3)正则函数提取字符串

以上都是格式比较规整的字符串。如果遇到非标准化的原始字符串时,需要分析字符串的特点,使用正则函数提取出想要的数据。

select regexp_extract('key1=123,key=456','key1=(-?[0-9]+)',1) as key1   ------获取整数(正负)
,regexp_extract('key3=test2,key=测试','key3=([a-z0-9]+)',1) as key3  ----------获取字符串(包含英文和数字)
,regexp_extract('key=456,key2=测试','key2=([\\u4e00-\\u9fa5]+)',1) as key2  ----------获取中文

输出结果如下图所示:

2.排序函数

 

猜你喜欢

转载自blog.csdn.net/FlySky1991/article/details/81670525