2016-03-13 4 views
-2

У меня есть следующие строки:Извлечение доменного имени в MYSQL

http://domain1.com/moshe 
https://domain2.com/ 
https://domain3.com 
https://domain4.com?gembom 

Мне нужно эти результаты

domain1.com 
domain2.com 
domain3.com 
domain4.com 

Как именно я могу сделать это в MySQL?

В JavaScript, я могу просто использовать регулярное выражение:

string.match(/https?:\/\/([^/]+)/)[0] 

Но я обнаружил, что MySQL не имеет извлекающий регулярное выражение. Существует ли альтернативный способ достижения тех же результатов?

+0

Какова цель извлечения? Было бы довольно тяжелой операцией в поиске «в реальном времени», поэтому лучше сделать что-то в другом месте. –

+0

Назначение: 'Группировка по домену. выберите afuncton (url) в качестве домена, count (*) group по домену. – Aminadav

+0

Идеальный способ сделать это на уровне приложения, большинство платформ имеют правильную функцию/метод/библиотеку анализа URL. Помните особые случаи, например, 'http: // pekka.rocks' является действительным доменным именем. Также обратите внимание на номера портов: 'http: //pekka.rocks: 8080' и т. Д. И т. Д. –

ответ

1

Вот пример того, как извлечь имена доменов из адресов в MySQL,

DECLARE @WebUrl VARCHAR(35); 
SET @WebUrl = 'http://stackoverflow.com/questions/ask?title=trim' 

SELECT @WebUrl AS 'WebsiteURL', 
     LEFT(SUBSTRING(@WebUrl, 
     (CASE WHEN CHARINDEX('//',@WebUrl)=0 
      THEN 5 
      ELSE CHARINDEX('//',@WebUrl) + 2 
      END), 35), 
     (CASE 
     WHEN CHARINDEX('/', SUBSTRING(@WebUrl, CHARINDEX('//', @WebUrl) + 2, 35))=0 
     THEN LEN(@WebUrl) 
     else CHARINDEX('/', SUBSTRING(@WebUrl, CHARINDEX('//', @WebUrl) + 2, 35))- 1 
     END) 
     ) AS 'Domain 

'; 

Вы можете сделать соответствующие изменения в соответствии с вашими потребностями.

+0

Спасибо, но как его использовать в запросе' select', который возвращает и другой столбец. например: 'select id, url, * domain * from table?' Я хочу добавить столбец к результатам. Не просто разобрать его. – Aminadav

Смежные вопросы