Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle:Преобразуване на IPv4 адрес в число?

  • извлечете четирите октета на адреса с помощта на regexp_substr.
  • възстановете стойността, като преместите октетите обратно към първоначалните им позиции.

Регулярният израз може да е относително скъп, така че ако правите това често, може да помислите за кеширане на числовата стойност във вашата таблица заедно с 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                                                                                                                                                                                                                                                     


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Само едно активно за всяко ограничение на връзката

  2. грешка в разрешаването на името на функцията на oracle pl/sql

  3. SQL Server 2016 на Linux

  4. Подмяна на част от пакет на Oracle

  5. sql (oracle) отчита броя на припокриващите се интервали