Подстрока базы данных Oracle :: извлечь IP из URL - PullRequest
0 голосов
/ 18 октября 2018

У меня есть поле, к которому я могу обратиться с помощью оператора select, который имеет:

https://<some IPv4 address>:someport/xxxxxxx/yyyyyyy

, где xxxxxxx и yyyyyyy могут различаться.

Как мне обрезатьлевые и правые нежелательные данные, чтобы просто получить IP?

Также этот элемент может выглядеть как строка jdbc.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 18 октября 2018

другой способ с использованием REGEXP_SUBSTR

select
  REGEXP_SUBSTR(
    REGEXP_SUBSTR('https://:someport/xxxxxxx/yyyyyyy','[^:]+',1,3),
    '[^/]+',1,1
  )
from dual;

результат: someport

select
  REGEXP_SUBSTR(
    REGEXP_SUBSTR('https://<some IPv4 address>:someport/xxxxxxx/yyyyyyy','[^//]+',1,2),
    '[^:]+',1,1
  )
from dual;

результат: некоторый IPv4-адрес

0 голосов
/ 18 октября 2018

Хорошо, старый SUBSTR + INSTR может помочь - примите участие между // и следующим / или :, если оно существует:

SQL> with test (url) as
  2    (select '/12453280/podstroka-bazy-dannyh-oracle-izvlech-ip-iz-url' from dual union all
  3     select 'https://localhost:8008/whatever' from dual)
  4  select
  5    substr(url,
  6           instr(url, '//') + 2,
  7           case when instr(url, ':', 1, 2) = 0 then instr(url, '/', 1, 3)
  8                else instr(url, ':', 1, 2)
  9           end - instr(url, '//') - 2
 10          ) result
 11  from test;

RESULT
--------------------------------------------------------------------------------
stackoverflow.com
localhost

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