Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Địa chỉ IP được lưu trữ dưới dạng số thập phân - PL / SQL để hiển thị dưới dạng dấu chấm tứ

Đâ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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01264 ở chế độ chờ vật lý

  2. hỗ trợ nhiều cơ sở dữ liệu cho cùng một classs JPA

  3. Có cách nào tự động để tạo tập lệnh khôi phục khi chèn dữ liệu với LINQ2SQL không?

  4. Sử dụng SQL Chọn hoặc PL để chuyển đổi

  5. TO_CHAR của một loại Oracle PL / SQL TABLE