Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Oracle:Mengonversi alamat IPv4 menjadi angka?

  • ekstrak empat oktet alamat menggunakan regexp_substr.
  • bentuk kembali nilai dengan menggeser oktet kembali ke posisi semula.

Regexp mungkin relatif mahal, jadi jika Anda sering melakukan ini, Anda mungkin mempertimbangkan untuk menyimpan nilai numerik dalam tabel di samping alamat 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 

Untuk kelengkapannya, berikut cara sebaliknya.

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. Mengambil entri daftar tertaut dalam basis data relasional

  2. Oracle 11g SQL - Mengganti NULLS dengan nol di mana kueri memiliki PIVOT

  3. dapatkan interval nilai yang tidak berubah dari urutan angka

  4. Apakah mungkin menjalankan skrip SQLPLUS pada file yang dikodekan sebagai UTF-8 dengan BOM

  5. Menghasilkan tanggal antara dua tanggal