2015-05-05 68 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 distinct substring(uri from'https?://([^ /] *)。*'),列表中的國家;' – PHA

1

你可以做到這一點:

select distinct substring(uri from '.*://([^/]*)'),country from list;