본문 바로가기
Programming/MSSQL

MSSQL 자리수 만큼 앞에 0 붙이기 (함수로 구현)

by 제타 2018. 4. 21.
반응형

/*

MSSQL에서 자리수만큼 앞 자리에 0을 붙여줘야 하는 경우가 간혹 있다.

예를 들어 1을 5자리로 출력하고 싶다면 00001이 되는 경우이다. 

특히 숫자 타입의 경우에는 0이다 날아가버려서 난감할 때가 있다. 예를 들어 전화번호를 비교해야할 때 0001이 1로 되어버린다면 비교시 분명 다른 문자로 인식할 것이기 때문이다. 따라서 우리는 정확한 포맷으로 표준화를 지켜줘야 한다.

어찌됐든 자리수만큼 숫자 0 붙이는 방법은 다음 함수를 생성하여 쉽게 붙일 수 있다.

*/


USE TESTDB


SET ANSI_NULLS OFF;


GO


SET QUOTED_IDENTIFIER ON;


GO


---------------------------------------------------------------------------------------------------------  

--  앞에 0을 붙이는 함수  

---------------------------------------------------------------------------------------------------------  


CREATE FUNCTION  [dbo].[UDF_VARCHAR_ZERO_MAKE](

@iSeq   INT,  -- Seq값   

@iPoint   INT  -- 자릿수  

) RETURNS VARCHAR(20)  

AS  

BEGIN  


DECLARE @wReturn   VARCHAR(20), -- Return 변수  

        @wZero    VARCHAR(20), -- 0을 붙일 변수  

        @wSize    INT  -- Seq 크기  


-- 변수 Default값 셋팅  

----------------------------------------------------------------------------------------------------   

SELECT @wSize    = LEN(@iSeq)  

SELECT @wZero    = ''  

-- 자릿수 크기까지 Loop돌기  

----------------------------------------------------------------------------------------------------   

WHILE @wSize < @iPoint   

BEGIN  

    SET  @wZero   = @wZero + '0'  

    SET  @wSize   = @wSize  + 1  

END  

-- 자릿수 크기까지 Loop돌기 끝  

----------------------------------------------------------------------------------------------------   

-- 리턴값 셋팅  

----------------------------------------------------------------------------------------------------   

SET  @wReturn  =  @wZero+CAST(@iSeq AS VARCHAR)  

-- 리턴  

----------------------------------------------------------------------------------------------------   

RETURN @wReturn  

END


GO


반응형