Как извлечь веб-адрес до нескольких уровней из URL? - PullRequest
0 голосов
/ 30 апреля 2019

В моей таблице есть ID, магазин, URL

В URL у меня есть два уровня веб-адреса

Уровень 2: www.abc.com/product/coffee/ 1 2 Уровень 3: www.abc.com/product/coffee/caffee_name 1 2 3 Мне нужно получить (два разных запроса) Id и хранить имя, когда URL как www.abc.com/product/coffee/ или www.abc.com/product/coffee/caffee_name. Я имею в виду, что после www.abc.com будет два или три уровня
(как я отметил выше). Мне нужно два отдельных запроса, чтобы получить Id и Store когда url как уровень 2 и уровень 3. www.abc.com является общим для каждой строки, но Остальные пути URL разные. (разные страницы), (мне нужно попасть в в общем, это всего лишь примеры)

select url from my_table where url like 'www.abc/product/%/'

Это дало мне все доступные URL, мне нужно только до уровня 2 и уровня 3

1 Ответ

1 голос
/ 30 апреля 2019

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

select 
   url
 , (LENGTH(url) - LENGTH (REPLACE(url, '/', '')))
from urls
where url like 'www.abc.com/product/%'
AND (LENGTH(url) - LENGTH (REPLACE(url, '/', ''))) BETWEEN 3 AND 4

см. демо

Разве мы не можем напрямую считать "/" вместо замены?

Я посмотрел больше в документации по базе данных Oracle для более простого метода.
В Oracle 11 G Release 2 (11.2) + вы можете использовать

   SELECT
       url
     , REGEXP_COUNT(url, '/') 
    FROM urls
    WHERE REGEXP_COUNT(url, '/') BETWEEN 3 AND 4

см. демо

что еще проще

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...