Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Заявка за съвпадение на IP адрес в SQL Server

Използвах следната функция за същото нещо. Опитайте и би трябвало да работи и за вас.

Той проверява дали IP адресът на потребителя е между диапазона от IP адреси или не. Скриптът по-долу ще върне 1, ако IP адресът е между диапазона, в противен случай ще върне 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

Взех горната функция от ТУК .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да премахнете крайния празен интервал в SQL Server – RTRIM()

  2. Как да настроите Spotlight Cloud и ефективно да отстраните неизправности на SQL сървър

  3. Използване на функция COALESCE за създаване на стойности, разделени със запетаи

  4. Всички Lat Lng на sql таблица в рамките на 15 км до всяка Lat lng на различна таблица-sql 2008

  5. Използване на броя на редовете от временна таблица в цикъл while SQL Server 2008