Đây là chức năng bạn cần:
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;
(Nhận xét về việc tạo hàm xác định và sử dụng to_char được thực hiện trên tàu - cảm ơn).
Trong Oracle 11G, bạn có thể đặt địa chỉ IP được định dạng thành một cột ảo trên bảng máy chủ:
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;
Cột này sau đó có thể được lập chỉ mục cho các truy vấn nếu được yêu cầu.
Truy vấn của bạn trở thành:
select hostname, formatted_ip_address from host;