2013-08-28 5 views
0

Мне нужно получить имя хоста & путь от URL с использованием регулярного выражения.SQL SERVER получить имя хоста и путь, но не параметры

URL-адрес может быть в форме

а) http://test.com/mary/archive/project.aspx -> Хочу http::/test.com/mary
б) http://www.testmary.com/company -> Хочу http://www.testmary.com/
с) http://marytest.com/b/about/ -> Хочу http://marytest.com/
г) http://mary.test.com/b/mary/project.aspx -> Я хочу http://mary.test.com/b/mary/

В основном я ищу получить записи с URL-адресом «mary» и получить только имя хоста или путь в зависимости от того, где находится «mary».

Любая помощь приветствуется.

Благодаря R

+0

Потому что я ищу «mary» и останавливаю поиск, пока не найду последний – user2726975

ответ

2

Вам не нужно CLR и RegEx для этого.

DECLARE @x TABLE(id INT, url VARCHAR(2048)); 

INSERT @x VALUES 
(1,'http://test.com/mary/archive/project.aspx'), 
    --> I want http::/test.com/mary 
(2,'http://www.testmary.com/company'), 
    --> I want http://www.testmary.com/ 
(3,'http://marytest.com/b/about/'), 
    --> I want http://marytest.com/ 
(4,'http://mary.test.com/b/mary/project.aspx'), 
    --> I want http://mary.test.com/b/mary/ 
(5,'mary.test.com'); 
    --> I want mary.test.com 

SELECT ID, 
    [output] = SUBSTRING(url, 1, LEN(url) - CHARINDEX('yram', REVERSE(url)) 
    + COALESCE(NULLIF(CHARINDEX('/', SUBSTRING(url, LEN(url) - CHARINDEX('yram', 
     REVERSE(url)) + 1, 2048)),0),2048)) 
FROM @x 
WHERE url LIKE '%mary%'; 

Результаты:

ID output 
-- -------------------------------- 
1 http://test.com/mary/ 
2 http://www.testmary.com/ 
3 http://marytest.com/ 
4 http://mary.test.com/b/mary/ 
5 mary.test.com 

Единственное, что я не понимаю, почему первая строка на выходе должна отсутствовать слэш, в то время как остальные строки включают его. В моем запросе эта косая черта включена во все строки. Если он не должен быть включен только в одну строку, вам нужно будет объяснить, почему.

Однако я рекомендую получить лучшую ручку очистки данных. Почему вы разрешаете некоторые URL-адреса без префикса http: //?

+0

@ user2726975 У вас есть кромка, которую вы не включили в вопрос? Почему вы не включили его в вопрос? –

+0

Это не будет работать, если вход имеет форму http://mary.test.com – user2726975

+0

У меня есть таблица с миллионами записей, и я пытаюсь получить все угловые шкафы, чтобы все было покрыто. Когда я запустил его сегодня, этот не сработал. – user2726975