sql >> Databáze >  >> RDS >> Oracle

IP adresa uložená jako desítková - PL/SQL se zobrazí jako tečkovaná čtveřice

Toto je funkce, kterou potřebujete:

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;

(Připomínky o vytváření deterministické funkce a použití to_char – díky).

V Oracle 11G můžete z formátované IP adresy vytvořit virtuální sloupec v hostitelské tabulce:

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;

Tento sloupec lze v případě potřeby indexovat pro dotazy.

Váš dotaz se změní na:

select hostname, formatted_ip_address from host;


  1. Stopwords a MySQL booleovský fulltext

  2. sql dotaz pro vyhledání a nahrazení textu ve všech řádcích

  3. kombinování dotazů mysql AND OR v Codeigniter

  4. MySQL jednoduché pochopení chyb