首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从urls中提取域名的Mysql查询

问从urls中提取域名的Mysql查询
EN

Stack Overflow用户
提问于 2012-02-15 00:18:52
回答 13查看 29K关注 0票数 25

对不起,我的英语

我使用此查询从urls中提取域名

代码语言:javascript
复制
SELECT SUBSTRING(LEFT(url, LOCATE('/', url, 8) - 1), 8) AS domain...

只有当url类似于www.google.com/某物时,它才有效

它对urls不起作用,比如

www.google.it (不带尾部斜杠)

www.google.it/abc/xzy/ (permalink)

你知道怎么解决这个问题吗?

EN

回答 13

Stack Overflow用户

发布于 2016-05-20 05:45:35

我不得不结合之前的一些答案,并对我的数据集进行了更多的修改。这就是我的工作,它返回域和任何子域:

代码语言:javascript
复制
SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(target_url, '/', 3), '://', -1), '/', 1), '?', 1) AS domain

解释(因为非平凡的SQL很少有意义):

SUBSTRING_INDEX(target_url, '/', 3) -如果url具有协议,则剥离任何路径

SUBSTRING_INDEX(THAT, '://', -1) -从中剥离任何协议

SUBSTRING_INDEX(THAT, '/', 1) -从其中剥离任何路径(如果没有协议)

SUBSTRING_INDEX(THAT, '?', 1) -从其中剥离查询字符串(如果没有路径或尾随/)

测试用例:

代码语言:javascript
复制
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(SUBSTRING_INDEX(target_url, '/', 3), '://', -1), '/', 1), '?', 1) AS domain
FROM ( 
    SELECT       'http://test.com' as target_url 
    UNION SELECT 'https://test.com' 
    UNION SELECT 'http://test.com/one' 
    UNION SELECT 'http://test.com/?huh' 
    UNION SELECT 'http://test.com?http://ouch.foo' 
    UNION SELECT 'test.com' 
    UNION SELECT 'test.com/one'
    UNION SELECT 'test.com/one/two'
    UNION SELECT 'test.com/one/two/three'
    UNION SELECT 'test.com/one/two/three?u=http://maaaaannn'
    UNION SELECT 'http://one.test.com'
    UNION SELECT 'one.test.com/one'
    UNION SELECT 'two.one.test.com/one' ) AS Test; 

结果:

代码语言:javascript
复制
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'test.com'
'one.test.com'
'one.test.com'
'two.one.test.com'
票数 50
EN

Stack Overflow用户

发布于 2013-08-15 01:07:44

删除www.、anysubdomain和/之后的所有内容:

代码语言:javascript
复制
SUBSTRING_INDEX((SUBSTRING_INDEX((SUBSTRING_INDEX(url, 'http://', -1)), '/', 1)), '.', -2) as domain
票数 17
EN

Stack Overflow用户

发布于 2015-11-14 06:09:10

所有的答案似乎对我都不起作用。例如,以?开头变量的url。一些答案失败了。这对我适用于所有类型的URL:

代码语言:javascript
复制
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(REPLACE(LOWER(url), 'https://', ''), 'http://', ''), '/', 1), '?', 1) AS domain;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9280336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档