#title 기수변환 [[TableOfContents]] ==== 10진수를 2 ~ 36진수 중 하나로 변환 ==== {{{ ALTER FUNCTION dbo.ufn_DecToDigit (@Dec BIGINT, @base TINYINT) RETURNS VARCHAR(63) -- AS /****************************************************************************************** 작성일: 2005-12-01 작성자: http://www.DataBaser.Net/ SP이름: ufn_DecToDigit SP내용: -10진수를 2 ~ 36진수 중 하나로 변환 예제: SELECT dbo.ufn_DecToDigit(17, 2) -- 10진수 17을 2진수로 변환 SELECT dbo.ufn_DecToDigit(17, 8) -- 10진수 17을 8진수로 변환 SELECT dbo.ufn_DecToDigit(17, 13) -- 10진수 17을 13진수로 변환 입력변수: @ItemInfo BIGINT : , @base TINYINT 반환변수: 참조문서: 비고: EDIT HISTORY: *********************************************************************************************/ BEGIN --입력된 값을 2진수로 리턴 DECLARE @r AS VARCHAR(63) , @alldigits AS VARCHAR(36) --SET @base = 2 --2진수면 2, 8진수면 8, 16진수면 16 SET @alldigits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ' SET @r = '' WHILE @Dec > 0 BEGIN SET @r = substring(@alldigits, @Dec % @base + 1, 1) + @r SET @Dec = @Dec / @base; END RETURN @r END GO }}} ==== 2진수를 10진수로 변환 ==== {{{ ALTER FUNCTION dbo.ufn_DigitToDec (@Digit VARCHAR(15)) RETURNS INT AS /****************************************************************************************** 작성일: 2005-12-01 작성자: http://www.DataBaser.Net/ SP이름: ufn_DigitToDec SP내용: -2진수를 10진수로 변환 예제: SELECT dbo.ufn_DigitToDec('0010') 입력변수: 반환변수: 참조문서: 비고: EDIT HISTORY: *********************************************************************************************/ BEGIN DECLARE @Len INT, @i INT, @r INT, @DigitNum VARCHAR(15) SET @Len = LEN(@Digit) SET @i = 1 SET @r = 0 SET @DigitNum = REVERSE(@Digit) WHILE (@i <= @Len) BEGIN SELECT @r = @r + CASE WHEN 1 = SUBSTRING(@DigitNum, @i, 1) THEN POWER(2, @i-1) ELSE 0 END SET @i = @i + 1 END RETURN @r END GO }}}