我有一个可以通过select语句访问的字段,该字段具有:
https://<some IPv4 address>:someport/xxxxxxx/yyyyyyy
其中xxxxxxx
和yyyyyyy
可能有所不同。
如何修剪左右不需要的数据以获取IP?
该元素也可能看起来像一个jdbc字符串。
谢谢!
答案 0 :(得分:0)
好的旧SUBSTR
+ INSTR
可能会有所帮助-参加//
与以下/
或:
之间(如果存在的话)
SQL> with test (url) as
2 (select 'https://stackoverflow.com/questions/52881996/' 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>
答案 1 :(得分:0)
使用REGEXP_SUBSTR
select
REGEXP_SUBSTR(
REGEXP_SUBSTR('https://:someport/xxxxxxx/yyyyyyy','[^:]+',1,3),
'[^/]+',1,1
)
from dual;
结果:某端口
select
REGEXP_SUBSTR(
REGEXP_SUBSTR('https://<some IPv4 address>:someport/xxxxxxx/yyyyyyy','[^//]+',1,2),
'[^:]+',1,1
)
from dual;
结果:一些IPv4地址