Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Abfrage nach übereinstimmender IP-Adresse in SQL Server

Ich habe die folgende Funktion für dasselbe verwendet. Probieren Sie es aus und es sollte auch für Sie funktionieren.

Es überprüft, ob die IP-Adresse des Benutzers zwischen den IP-Adressen liegt oder nicht. Das folgende Skript gibt 1 zurück, wenn die IP-Adresse zwischen dem Bereich liegt, andernfalls gibt es 0 zurück;

CREATE FUNCTION IsIPAddressInRange
(
    @IPAddress varchar(20),
    @StartRange varchar(20),
    @EndRange varchar(20)
)
RETURNS INT
AS
BEGIN
    DECLARE @MAXRANGE BIGINT = 256
    RETURN 
    CASE 
    WHEN PARSENAME(@IPAddress,1) + @MAXRANGE * PARSENAME(@IPAddress,2) + 
    @MAXRANGE * @MAXRANGE * PARSENAME(@IPAddress ,3) + @MAXRANGE * @MAXRANGE * @MAXRANGE * PARSENAME(@IPAddress ,4)
    BETWEEN
    PARSENAME(@StartRange,1) + @MAXRANGE * PARSENAME(@StartRange,2) + 
    @MAXRANGE * @MAXRANGE * PARSENAME(@StartRange ,3) + @MAXRANGE * @MAXRANGE * @MAXRANGE * PARSENAME(@StartRange ,4)
    AND
    PARSENAME(@EndRange,1) + @MAXRANGE * PARSENAME(@EndRange,2) + 
    @MAXRANGE * @MAXRANGE * PARSENAME(@EndRange ,3) + @MAXRANGE * @MAXRANGE * @MAXRANGE * PARSENAME(@EndRange ,4)
    THEN 1
    ELSE 0
    END     
END

Ich habe die obige Funktion von HIER .