在Oracle sql中将IPv4地址拆分为4个数字

我正在尝试将给定的IPv4地址拆分为四个数字.

在SQL Server中,此查询适用于我:

select CAST (PARSENAME('10.20.30.40',4) AS INT) 

结果:10

select CAST (PARSENAME('10.20.30.40',3) AS INT)

结果:20

等等.

我需要Oracle SQL中的等效语法,但找不到它.任何的想法?

最佳答案
你可以使用regexp_substr:

select ip,
       regexp_substr(ip, '\d+',1,1) as first_octet,
       regexp_substr(ip, '\d+',1,2) as second_octet,
       regexp_substr(ip, '\d+',1,3) as third_octet,
       regexp_substr(ip, '\d+',1,4) as fourth_octet
from  (select '10.20.30.40' AS ip from dual )ips;

Rextester Demo

转载注明原文:在Oracle sql中将IPv4地址拆分为4个数字 - 代码日志