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

Adres IP przechowywany jako dziesiętny - PL/SQL do wyświetlenia jako kropkowany quad

To jest funkcja, której potrzebujesz:

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;

(Komentarze na temat tworzenia deterministycznych funkcji i używania to_char na pokładzie - dzięki).

W Oracle 11G możesz ustawić sformatowany adres IP jako wirtualną kolumnę w tabeli hostów:

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;

Ta kolumna może być następnie indeksowana pod kątem zapytań, jeśli jest to wymagane.

Twoje zapytanie brzmi:

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. Wyzwalacz Oracle PL/SQL do uruchomienia tylko w przypadku zmian danych wprowadzonych po 9-5 godzinach

  2. dwa lewe sprzężenia zewnętrzne nie działają Oracle sql

  3. Pobieranie oracle.jdbc.driver.LogicalConnection, potrzebujesz oracle.jdbc.OracleConnection

  4. Utworzenie pliku .jks z pliku .crt i .key jest możliwe

  5. W Oracle, w odniesieniu do składni - jak przekonwertować składnię (+) na nowoczesną konwencjonalną JOIN?