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

Alamat IP disimpan sebagai desimal - PL/SQL untuk ditampilkan sebagai quad bertitik

Ini adalah fungsi yang Anda butuhkan:

create or replace
function inttoip(ip_address integer) return varchar2
deterministic
is
begin
    return to_char(mod(trunc(ip_address/256/256/256),256))
           ||'.'||to_char(mod(trunc(ip_address/256/256),256))
           ||'.'||to_char(mod(trunc(ip_address/256),256))
           ||'.'||to_char(mod(ip_address,256));
end;

(Komentar tentang membuat fungsi deterministik dan menggunakan to_char diambil di papan - terima kasih).

Di Oracle 11G Anda dapat membuat alamat IP yang diformat menjadi kolom virtual di tabel host:

alter table host
add formatted_ip_address varchar2(15)
generated always as
( to_char(mod(trunc(ip_address/256/256/256),256))
          ||'.'||to_char(mod(trunc(ip_address/256/256),256))
          ||'.'||to_char(mod(trunc(ip_address/256),256))
          ||'.'||to_char(mod(ip_address,256))
) virtual;

Kolom ini kemudian dapat diindeks untuk kueri jika diperlukan.

Kueri Anda menjadi:

select hostname, formatted_ip_address from host;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah aman untuk meletakkan indeks pada Tabel Sementara Oracle?

  2. Mendapatkan stempel waktu file menggunakan PL/SQL

  3. Permintaan Oracle sebagai sumber di SSIS mendefinisikan tipe data yang salah

  4. Apache Dbutils mengubah nama kolom dalam pembaruan Sql

  5. Kembalikan nilai variabel sql dari dalam Oracle Sql Query kembali ke kode .NET