/*
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
'Programming > MSSQL' 카테고리의 다른 글
MSSQL 데이터 타입 크기 (DATA TYPE SIZE) (120) | 2018.04.24 |
---|---|
MSSQL 현재 실행중인 쿼리, LOCK 세션, ACTIVE 세션, KILL 세션 (2) | 2018.04.23 |
MSSQL 날짜 포맷 변환 CONVERT (0) | 2018.04.21 |
MSSQL 날짜 계산 함수 DATEADD, DATEDIFF (0) | 2018.04.21 |
MSSQL tempDB 옮기기 (0) | 2018.04.18 |