3
如何將點位十進制格式的IPv4地址轉換爲數字?例如,地址39.255.2.51
應該轉換爲4026466867
。Oracle:將IPv4地址轉換爲數字?
如何將點位十進制格式的IPv4地址轉換爲數字?例如,地址39.255.2.51
應該轉換爲4026466867
。Oracle:將IPv4地址轉換爲數字?
正則表達式可能相對昂貴,所以如果你這樣做了很多,你可能會考慮在表中緩存IP地址的數值。
with addr as (select '239.255.2.51' ip from dual)
select ip, to_number(regexp_substr(ip, '\d+', 1, 1)) * 16777216 +
to_number(regexp_substr(ip, '\d+', 1, 2)) * 65536 +
to_number(regexp_substr(ip, '\d+', 1, 3)) * 256 +
to_number(regexp_substr(ip, '\d+', 1, 4)) n
from addr;
IP N
------------- ----------
239.255.2.51 4026466867
爲了完整性,下面是如何去其他方式。
with addr as (select 4026466867 n from dual)
select n, mod(trunc(n/16777216),256) ||'.'||
mod(trunc(n/65536), 256) ||'.'||
mod(trunc(n/256), 256) ||'.'||
mod(n, 256) ip
from addr;
N IP
---------- ------------
4026466867 239.255.2.51