说说parse_url和正则表达式,在SQL中如何解析字符串

学习更多,欢迎关注微信公众号:Excel办公小技巧  

 SQL作为一种结构化查询语言,方便我们快速拿到大量存储规范的数据。不过我们也会遇到不能直接拿到我们想要的数据格式,比如我们要从URL中拿到某个参数值或是拿到某一字符串中的指定长度,今天我们介绍两个功能来帮助我们:parse_url函数以及正则表达式功能。

1. parse_url函数提取URL需求信息

1.1 主机HOST

select parse_url('https://mp.weixin.qq.com/s/bblf5-0Ur8MUgG02kpOc5Q?case=111','HOST')

结果:mp.weixin.qq.com

1.2 获取URL路径PATH

select parse_url('https://mp.weixin.qq.com/s/bblf5-0Ur8MUgG02kpOc5Q?case=111','PATH')

结果:/s/bblf5-0Ur8MUgG02kpOc5Q

1.3 获取协议PROTOCOL

select parse_url('https://mp.weixin.qq.com/s/bblf5-0Ur8MUgG02kpOc5Q?case=111','PROTOCOL')

结果:https

1.4 获取?后面的内容QUERY

select parse_url('https://mp.weixin.qq.com/s/bblf5-0Ur8MUgG02kpOc5Q?case=111','QUERY')

结果:case=111

1.5 获取?后面参数对应的值

select parse_url('https://mp.weixin.qq.com/s/bblf5-0Ur8MUgG02kpOc5Q?case=111','QUERY','case')

结果:111

1.6 获取#后的内容:

select parse_url('https://mp.weixin.qq.com/s/bblf5-0Ur8MUgG02kpOc5Q?case=#abc','REF');

结果:abc

2. 正则表达式提取需求信息

    正则表达式是一种字符的匹配模型,在很多语言中都会用到。本篇文章通过SQL里的regexp_extract函数实现的几个小案例带大家了解下,详细语法后续单独作为一篇文章介绍。

语法:regexp_extract(要提取的字符串,正则表达式,0(全部返回)或者1(返回第一部分),2,3...)

2.1 提取数字部分

    [0-9]表示数字,{1,100}表示数字个数在1-100之间,0表示全部返回

select regexp_extract('acbd 1324','[0-9]{1,100}',0)

    或者使用+返回一个或多个或者{1,}不写最大值约束

select regexp_extract('acbd 1324','[0-9]+',0)

结果:1324

2.2 提取英文部分

select regexp_extract('acbd 1324','[a-zA-Z]+',0)

结果:acbd

2.3 提取中文部分

select regexp_extract('acbd 1324中文部分','[\\u4e00-\\u9fa5]+',0)

结果:中文部分

2.4 提取数字和英文部分

2.4.1 中间包含其他字符,如空格

select regexp_extract('acbd 1324中文部分','[\\u4e00-\\u9fa5]+',0)

结果:acbd 1324

2.4.2 中间包含其他字符,如下划线

select regexp_extract('acbd_1324中文部分','\\w+',0)

结果:acbd_1324

2.4.3 若数字字母相连

select regexp_extract('acbd1324中文部分','[A-Za-z0-9]+',0)

结果:acbd1324

2.5 提取浮点类型数值

select regexp_extract('acbd1324.33中文部分','(\\d+)(\\.\\d+)',0)

结果:1324.33

2.6 有负数怎么办

select regexp_extract('acbd:-1324.33','(-*\\d+)(\\.\\d+)',0)

结果:-1324.33

你可能感兴趣的:(数据处理,SQL,数据分析方法)