sql >> Database teknologi >  >> RDS >> Oracle

IP-adresse gemt som decimal - PL/SQL for at blive vist som prikket quad

Dette er den funktion, du har brug for:

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;

(Kommentarer om at gøre funktion deterministisk og bruge to_char medtaget - tak).

I Oracle 11G kunne du gøre den formaterede IP-adresse til en virtuel kolonne på værtstabellen:

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;

Denne kolonne kan derefter indekseres for forespørgsler, hvis det er nødvendigt.

Din forespørgsel bliver:

select hostname, formatted_ip_address from host;


  1. Sådan tilføjes en JSON-kolonne i MySQL med Rails 5 Migration

  2. PHP, få data fra databasen

  3. Hvordan opretter du forbindelse til en Postgres-database uden adgangskode ved hjælp af pg-promise?

  4. Parametriseret dynamisk sql-forespørgsel