Това е функцията, от която се нуждаете:
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;
(Коментари относно превръщането на функцията в детерминистична и използването на to_char взети под внимание - благодаря).
В Oracle 11G можете да направите форматирания IP адрес виртуална колона в таблицата на хоста:
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;
След това тази колона може да бъде индексирана за заявки, ако е необходимо.
Вашата заявка става:
select hostname, formatted_ip_address from host;