2015-05-05 4 views
0

У меня есть таблица выглядит следующим образом:Запрос для удаления префикса и удаления дубликатов

uri    | country 
----------------------+-------- 
http://www.A.com  | NL 
http://www.A.com/sub | NL 
https://www.B.com  | NL 
http://C.com   | DL 

мне нужен запрос на выборку (включая регулярные выражения), чтобы показать различные строки без URI.

Desired outcome: 
    www.A.com  NL 
    www.B.com  NL 
    C.com   DL 

Я попытался this:

select distinct substring(uri from '(https?://([^/]*/){1,2})'),country from list; 

Но регулярное выражение не может обрабатывать простой домен, как: www.A.com Он работает только для www.A.com/sub

Любой идея?

ответ

1

Причина, по которой это ([^/]*/) Эта часть регулярного выражения требует, чтобы текст заканчивался /. Глядя на ваш желаемый результат, я думаю, вы должны изменить регулярное выражение https?://([^/]*).*

+0

Спасибо, основываясь на том, что я пытался 'выберите подстроку ('https://dev.foo .com/sdfa 'from' (https?: // ([^ /] *) {1,2}) '); 'и работает для удаления суффикса из домена, но не удаляет http: // из префикса , Как это? – PHA

+0

У вас есть 2 круглых кронштейна, а также 2 группы. Те, что находятся вокруг всего регулярного выражения, и вокруг '[^ /] *' Поскольку вы не хотите ничего делать с внешними скобками, вы можете их удалить. –

+0

А ты прав, большое спасибо. Вот полный запрос: 'select different substring (uri from 'https?: // ([^ /] *). *'), Страна из списка;' – PHA

1

Вы можете сделать это:

select distinct substring(uri from '.*://([^/]*)'),country from list; 
Смежные вопросы