Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle:Konwersja adresu IPv4 na liczbę?

  • wyodrębnij cztery oktety adresu za pomocą regexp_substr.
  • odtworzyć wartość, przesuwając oktety z powrotem do ich pierwotnych pozycji.

Wyrażenie regularne może być stosunkowo drogie, więc jeśli robisz to często, możesz rozważyć buforowanie wartości liczbowej w tabeli obok adresu 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 

Aby uzyskać kompletność, oto jak przejść w drugą stronę.

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                                                                                                                                                                                                                                                     


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Program ładujący sql - brak drugiego ciągu obudowy

  2. Instalowanie pakietu Oracle 9i Developer Suite 2.0 w systemie Windows

  3. Konwertuj ciąg znaków oddzielonych przecinkami na tablicę w PL/SQL

  4. Buforowanie Unicode Oracle

  5. zapytanie Oracle z kilkoma warunkami filtrowania