- regexp_substr का उपयोग करके पते के चार अष्टक निकालें।
- अष्टक को उनकी मूल स्थिति में वापस ले जाकर मान का पुनर्गठन करें।
रेगेक्सपी अपेक्षाकृत महंगा हो सकता है, इसलिए यदि आप इसे बहुत अधिक कर रहे हैं तो आप आईपी पते के साथ अपनी तालिका में संख्यात्मक मान को कैशिंग करने पर विचार कर सकते हैं।
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