2016-03-24 3 views
0

У меня есть столбец с данными, как это:MySQL SELECT, ЗАМЕНА части строки

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 (домен, 'http: // www.', ''), '/', 1) AS-домен FROM mytable? – user3312792

0

Вы можете сделать это с помощью substring_index(). Например, это может работать на ваших данных:

select substring_index(substring_index(col, '/', 3), '.', -2) as domain 
Смежные вопросы