sql >> Database teknologi >  >> RDS >> Sqlserver

Forespørgsel efter matchende IP-adresse i SQL Server

Jeg brugte følgende funktion til samme ting. Prøv det, og det burde også virke for dig.

Det verificerer, om brugerens IP-adresse er mellem rækken af ​​IP-adresser eller ej. Nedenstående script returnerer 1, hvis IP-adressen er mellem området, ellers returnerer det 0;

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

Jeg tog ovenstående funktion fra HER .



  1. Postgresql - Forespørgsel kører meget hurtigere med enable_nestloop=false. Hvorfor gør planlæggeren ikke det rigtige?

  2. Sådan erstattes sqlldr-værdier

  3. Fejlkode 1292 Mysql DateTime

  4. SQL Server 2008 - Hjælp til at skrive simpel INSERT Trigger