sql >> Database >  >> RDS >> Sqlserver

Query voor overeenkomend IP-adres in SQL Server

Ik heb de volgende functie voor hetzelfde gebruikt. Probeer het en het zou ook voor jou moeten werken.

Het controleert of het IP-adres van de gebruiker binnen het bereik van IP-adressen valt of niet. Het onderstaande script retourneert 1, als het IP-adres tussen het bereik ligt, anders wordt 0 geretourneerd;

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

Ik heb bovenstaande functie overgenomen van HIER .



  1. Kolom bijwerken op basis van vorige record

  2. Is er een manier om een ​​UNIEKE index hoofdletterongevoelig te maken in Mysql 5.1.x?

  3. Ingesloten MySQL Server C# Wrapper?

  4. Effect van NOLOCK-hint in SELECT-instructies