출처: http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=92534
지금은 필요하지 않지만, 웬지 언젠가 꼭 필요할 것만 같은 function 들이군. 그래서 일단 스크랩.* 사용예 SELECT dbo.fnNetworkRangeLowestIP('192.168.1.5', '255.255.255.240') SELECT dbo.fnNetworkRangeHighestIP('192.168.1.5', '255.255.255.240')
* fnNetworkRangeLowestIP (IP 범위 중 가장 작은 IP 주소 얻어오는 함수)
CREATE FUNCTION [dbo].[fnNetworkRangeLowestIP] ( @NetworkIP VARCHAR(15), @SubnetMask VARCHAR(15) ) RETURNS VARCHAR(15) AS BEGIN RETURN CAST(CAST(PARSENAME(@NetworkIP, 4) AS TINYINT) & CAST(PARSENAME(@SubnetMask, 4) AS TINYINT) AS VARCHAR(3)) + '.' + CAST(CAST(PARSENAME(@NetworkIP, 3) AS TINYINT) & CAST(PARSENAME(@SubnetMask, 3) AS TINYINT) AS VARCHAR(3)) + '.' + CAST(CAST(PARSENAME(@NetworkIP, 2) AS TINYINT) & CAST(PARSENAME(@SubnetMask, 2) AS TINYINT) AS VARCHAR(3)) + '.' + CAST(CAST(PARSENAME(@NetworkIP, 1) AS TINYINT) & CAST(PARSENAME(@SubnetMask, 1) AS TINYINT) AS VARCHAR(3)) END
* fnNetworkRangeHighestIP (IP 범위 중 가장 큰 IP 주소 얻어오는 함수)
CREATE FUNCTION [dbo].[fnNetworkRangeHighestIP] ( @NetworkIP VARCHAR(15), @SubnetMask VARCHAR(15) ) RETURNS VARCHAR(15) AS BEGIN RETURN CAST(CAST(PARSENAME(@NetworkIP, 4) AS TINYINT) | (CAST(PARSENAME(@SubnetMask, 4) AS TINYINT) ^ 0xFF) AS VARCHAR(3)) + '.' + CAST(CAST(PARSENAME(@NetworkIP, 3) AS TINYINT) | (CAST(PARSENAME(@SubnetMask, 3) AS TINYINT) ^ 0xFF) AS VARCHAR(3)) + '.' + CAST(CAST(PARSENAME(@NetworkIP, 2) AS TINYINT) | (CAST(PARSENAME(@SubnetMask, 2) AS TINYINT) ^ 0xFF) AS VARCHAR(3)) + '.' + CAST(CAST(PARSENAME(@NetworkIP, 1) AS TINYINT) | (CAST(PARSENAME(@SubnetMask, 1) AS TINYINT) ^ 0xFF) AS VARCHAR(3)) END- 2011.05.19 Joshua95
'Programming > Database' 카테고리의 다른 글
[MSSQL] DB 데이터를 text 파일로 보내기 (2) | 2011.07.19 |
---|---|
[DB2] 명령편집기에서 db2admin 없이 쿼리하기 (0) | 2011.06.08 |
[MSSQL] 테이블에 조건 없이 특정 개수 삭제하기 (2) | 2010.12.02 |
[DB2] 특정 스트링의 구분자 개수 얻어오기 (1) | 2010.08.11 |
[DB2] 문자열의 몇번째 구분자 정보 얻어오기/변경하기 (0) | 2010.08.11 |
댓글