Oracle
 sql >> база данни >  >> RDS >> Oracle

IP адресът се съхранява като десетичен - PL/SQL за показване като четириъгълник с точки

Това е функцията, от която се нуждаете:

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;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо в Oracle SQL изтритите (некоммитирани) редове не се виждат в текущата сесия, но се виждат в други сесии?

  2. Текстът на Oracle се екранира с къдрави скоби и заместващи знаци

  3. Oracle SQL цикъл през диапазон от дати

  4. История на базата данни за използване от клиента

  5. Изберете N-ти ред от таблица в Oracle