AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL Select gesucht - IP Adresse zwischen IP Min und IP Max
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Select gesucht - IP Adresse zwischen IP Min und IP Max

Ein Thema von Piro · begonnen am 8. Dez 2014 · letzter Beitrag vom 10. Dez 2014
 
jensw_2000
(Gast)

n/a Beiträge
 
#8

AW: SQL Select gesucht - IP Adresse zwischen IP Min und IP Max

  Alt 9. Dez 2014, 15:51
Schnell mal gebastelt ..


SQL Funktion "IPAddressBetween(Adresse, Bereich-Beginn, Bereich-Ende)"


Delphi-Quellcode:
SELECT dbo.IPAddressBetween('192.168.10.10','192.168.10.11','192.168.10.100');
 >> 0

SELECT dbo.IPAddressBetween('192.168.10.10','192.168.10.1','192.168.10.100');
 >> 1
In der DB musst Du dafür einmalig 2 Skalarwertfunktionen anlegen.
Vorab .. Ja. Das Errorhandling bei Übergabe falscher Werte kannst Du selbst einbauen.

Code:
CREATE FUNCTION [dbo].[IPStringToInt](
   @IPAddressString VARCHAR(15)
   )
RETURNS BIGINT
BEGIN

   declare @Oktett1 TinyInt;
   declare @Oktett2 TinyInt;
   declare @Oktett3 TinyInt;
   declare @Oktett4 TinyInt;

   declare @OktettWert1 BIGINT;
   declare @OktettWert2 BIGINT;
   declare @OktettWert3 BIGINT;
   declare @OktettWert4 BIGINT;

   declare @result BIGINT = -1;

    SELECT @Oktett1 = PARSENAME(@IPAddressString,4);
   SELECT @Oktett2 = PARSENAME(@IPAddressString,3);
   SELECT @Oktett3 = PARSENAME(@IPAddressString,2);
   SELECT @Oktett4 = PARSENAME(@IPAddressString,1);

   SET @OktettWert1 = POWER(@Oktett1,4)
   SET @OktettWert2 = POWER(@Oktett2,3)
   SET @OktettWert3 = POWER(@Oktett3,2)
   SET @OktettWert4 = POWER(@Oktett4,1)

   SET @result = @OktettWert1 + @OktettWert2 + @OktettWert3 + @OktettWert4;

return @result;
   
END
Code:
CREATE FUNCTION [dbo].[IPAddressBetween]
(
   @IPAddress Varchar(15),
   @RangeStart VARCHAR(15),
   @RangeEnd VARCHAR(15)
)
RETURNS Bit
AS
BEGIN
  declare @IPValue BIGINT = dbo.IPStringToInt(@IPAddress)
  declare @RangeStartValue BIGINT = dbo.IPStringToInt(@RangeStart)
  declare @RangeEndValue BIGINT = dbo.IPStringToInt(@RangeEnd)

  declare @result BIT

  IF (@IPValue >= @RangeStartValue) AND (@IPValue <= @RangeEndValue)
    set @result = 1
  ELSE
    set @result = 0

  RETURN @result
END
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz