PARSENAME 함수를 사용하여 IP 주소 값을 네 부분으로 나누어 개별적으로 비교할 수 있습니다.
작성 및 테스트 데이터 스크립트 채 웁니다 : 우리는 IPv6 로의 이동하면, 롤
CREATE TABLE ipaddresses
(
ip VARCHAR(20) NOT NULL
);
INSERT INTO ipaddresses (ip) VALUES
('192.12.34.12'),
('192.12.#.12'),
('192.#.34.12');
시나리오 # 1
DECLARE @userip VARCHAR(20)
SET @userip = '192.56.34.12'
;WITH ips AS
(
SELECT REPLACE(ip, '#', '%') AS ip
FROM ipaddresses
)
SELECT COUNT(ip) AS validcount
FROM ips
WHERE PARSENAME(@userip, 1) LIKE PARSENAME(ip, 1)
AND PARSENAME(@userip, 2) LIKE PARSENAME(ip, 2)
AND PARSENAME(@userip, 3) LIKE PARSENAME(ip, 3)
AND PARSENAME(@userip, 4) LIKE PARSENAME(ip, 4);
VALIDCOUNT
----------
1
시나리오 # 2
DECLARE @userip VARCHAR(20)
SET @userip = '191.12.34.12'
;WITH ips AS
(
SELECT REPLACE(ip, '#', '%') AS ip
FROM ipaddresses
)
SELECT COUNT(ip) AS validcount
FROM ips
WHERE PARSENAME(@userip, 1) LIKE PARSENAME(ip, 1)
AND PARSENAME(@userip, 2) LIKE PARSENAME(ip, 2)
AND PARSENAME(@userip, 3) LIKE PARSENAME(ip, 3)
AND PARSENAME(@userip, 4) LIKE PARSENAME(ip, 4);
VALIDCOUNT
----------
0
행운을 빕니다. – Styxxy
또한 예제가 단순화되었고 5 개 이상의 비교가 필요하다고 생각합니다. 어쩌면 ... ㅎ –
당신은 #. #. #. # –