2015-05-27 4 views
0

У меня есть разные строки URLсложная подстрока URL строки в SQL Redshift

/kampane/luxury-shoes/damska-obuv-v11574-negro-38-cerna 
/pl-accesoriu-gopro-caps-doors-uni/ 
/crossbody-kabelka-clutch-eclipce-negro-51x50p7-2000.html 
http://www.rozbaleno.cz/chladnick…/mraznicka-guzzanti-gz-40f 

и т.д.

Мне нужны подстрока их для той части после последних косых черт, но, если после того, как последний слэш пустое пространство Мне нужно принять участие перед ним. Также мне нужно удалить все после точки, если точка после нужной мне подстроки. Так что мой результат подстроки эти строки выше:

damska-obuv-v11574-negro-38-cerna 
pl-accesoriu-gopro-caps-doors-uni 
crossbody-kabelka-clutch-eclipce-negro-51x50p7-2000 
mraznicka-guzzanti-gz-40f 

Я не могу написать код, чтобы не потерять данные. Пожалуйста помоги.

ответ

0

Один из способов - использовать регулярные выражения и подстроки. Однако этого может быть достаточно:

select (case when url like '%/' 
      then reverse(split_part(reverse(url), '/', 2)) 
      else reverse(split_part(reverse(url), '/', 1)) 
     end) 
+0

спасибо, но его не совсем ... Мне также нужно удалить все после того, как .html включит «.html», а также «?» –

+0

@LucieSperkova. , , Это не вопрос, который вы задали. Я бы посоветовал вам задать * другой вопрос с соответствующими данными образца. Я думаю, что изменение вопроса таким образом, чтобы недействительные ответы были невежливыми, потому что он привлекает внимание к ответам. –

0

Я не хочу быть inpolite, я очень ценю вашу помощь, спасибо! но я написал, что у меня есть также строка /crossbody-kabelka-clutch-eclipce-negro-51x50p7-2000.html, и мне нужно удалить все после точки. и это не то, что делает этот результат. Но я, вероятно, нашел решение:

case when right (pagepath, 1) = '/' then regexp_replace (regexp_substr (left (pagepath, LEN (pagepath) -1), '[^ /] + $') , '.html (.) | \? (. )') else regexp_replace (regexp_substr (pagepath, '[^ /] + $'), '. html (. ) | \? (.)') end

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