sql – 使用REGEXP_EXTRACT获取域和子域

前端之家收集整理的这篇文章主要介绍了sql – 使用REGEXP_EXTRACT获取域和子域前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我只设法提取我使用的网站列表的TLD
REGEXP_EXTRACT(Domain_name,r'(\.[^.:]*)]\.?:?[0-9]*$') AS web_tld

例:

我有

www.example1.abc.com
www.example2.efg.123.net

我想要结果

子域

example1
efg

abc
123

TLD

.com
.net

编辑:
在我的查询中遇到错误
‘必须指定一个捕获组’
当我使用(.?([^:]).([^.]).([^:]):?[0-9] * $)作为正则表达式

SELECT
REGEXP_EXTRACT(Domain,r'(\.?([^.:]+)\.([^.:]+)\.([^.:]+):?[0-9]*$)'),FROM [weblist.domain]
ORDER BY 1
LIMIT 250;

解决方法

由于您只能使用一个捕获组,我认为您实际上可以使用3个单独的正则表达式来获取所需的值:
SELECT
REGEXP_EXTRACT(Domain,r'([^.:]+):?[0-9]*$'),REGEXP_EXTRACT(Domain,r'([^.:]+).[^.:]+:?[0-9]*$'),r'([^.:]+).[^.:]+.[^.:]+:?[0-9]*$')
FROM [weblist.domain]
ORDER BY 1
LIMIT 250;

猜你在找的MsSQL相关文章