sql >> Databasteknik >  >> RDS >> Oracle

IP-adress lagrad som decimal - PL/SQL för att visas som prickad quad

Det här är funktionen du behöver:

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;

(Kommentarer om att göra funktionen deterministisk och använda to_char tas ombord - tack).

I Oracle 11G kan du göra den formaterade IP-adressen till en virtuell kolumn på värdtabellen:

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;

Denna kolumn kan sedan indexeras för frågor om det behövs.

Din fråga blir:

select hostname, formatted_ip_address from host;


  1. Kontrollera om ett objekt inte finns i en annan tabell

  2. mysql-python installationsproblem (på mac os x lion)

  3. Hitta det totala antalet resultat i mySQL-frågan med offset+limit

  4. Hur man säkerhetskopierar all db av pg_dump i batchfil - postgres