一尘不染

我们如何使用MySQL和正则表达式查找域名

mysql

我在数据库中有一些域列表,例如

http://www.masn.com/index.html
http://www.123musiq.com/index.html 等等

我需要的是

http://www.masn.com
http://www.123musiq.com

我怎样才能做到正则表达式???


阅读 584

收藏
2020-05-17

共1个答案

一尘不染

在中MySQL,正则表达式可以匹配,但不能返回子字符串。

您可以使用SUBSTRING_INDEX

SELECT  SUBSTRING_INDEX('www.example.com', '/', 1)

,但是它不是协议前缀安全的。

如果您混合使用前缀和无前缀URL,请使用以下命令:

SELECT  url RLIKE '^http://',
        CASE
        WHEN url RLIKE '^http://' THEN
                SUBSTRING_INDEX(SUBSTRING_INDEX(url, '/', 3), '/', -1)
        ELSE
                SUBSTRING_INDEX(url, '/', 1)
        END
FROM    (
        SELECT   'www.example.com/test/test' AS url
        UNION ALL
        SELECT   'http://www.example.com/test'
        ) q
2020-05-17