2016-03-24 99 views
0

的一部分,我有这样的数据列:MySQL的选择替换字符串

http://www.example.com/category/link.html 
http://www.example2.com/category2/link.html 
http://www.example3.com/directory/category/link.php 
http://www.example4.com/category4/link.php 
http://www.example5.com/directory/link.html 

我想选择这些链接的不同domain.com部分,然后插入另一列

SELECT DISTINCT REPLACE(domain,'http://www.','') AS domain FROM table; 

这会选择没有http://www.的所有东西如何删除链接的其余部分,以便将domain.com留下,然后将其插入另一列?

回答

0

试试这个:

SELECT DISTINCT SUBSTRING_INDEX(REPLACE(domain,'http://www.',''), '/', 1) AS domain 
FROM mytable 

应用SUBSTRING_INDEX'http://www.'后已从域串消除,返回字符串的一部分的第一次出现之前'/'

Demo here

+0

如何将结果插入另一列? – user3312792

+0

@ user3312792只要做一个'UPDATE'。它实际上取决于你想要更新哪些行。 –

+0

UPDATE mytable SET field = SELECT DISTINCT SUBSTRING_INDEX(REPLACE(domain,'http:// www。',''),'/',1)AS域 FROM mytable? – user3312792

0

您可以使用substring_index()来做到这一点。例如,这可能对您的数据的工作:

select substring_index(substring_index(col, '/', 3), '.', -2) as domain