본문 바로가기
DataBase/MS-SQL

LPad 기능구현

by 언덕너머에 2014. 5. 21.

/*
 ==========================================================================================
 FUNC     명 : [dbo].[ufn_LPAD]
 FUNC   기능 : @STRING1이 최대 길이 @LENGTH이 될 때까지 왼쪽으로 부터 @STRING2로

                     채운 문자열을 반환한다.
                     만약 @STRING1이 @LENGTH보다 길면 왼쪽부터 @LENGTH 길이 만큼 @STRING1

                     문자열의 일부를 반환한다.
                     @STRING2는 디폴트로 char(1)이지만 char(1)보다 클 때는 문자열의 오른쪽부터

                     @LENGTH만큼 잘라낸 문자열을 반환한다.
 Return   값 : @STRING1을 @LENGTH만큼 왼쪽으로 @STRING2로 채운 문자열
 실 행  예 제: SELECT [dbo].[ufn_LPAD]('12345',10, '0')

                   -->RETURN '0000012345'                                         
 ==========================================================================================
*/
CREATE FUNCTION [dbo].[ufn_LPad](
 @STRING1 VARCHAR(4000), -- 변경할 데이터
 @LENGTH INT,   -- 변경된 문자 길이
 @STRING2 VARCHAR(4000) -- LEFT PAD할 문자
)
RETURNS VARCHAR(4000)
AS 
BEGIN
DECLARE @vIndex INT, @vResult VARCHAR(4000), @vAddTmp VARCHAR(4000)

 

IF ISNULL(@STRING1, '') ='' RETURN (NULL)

 

SET @vIndex = @LENGTH - LEN(@STRING1)

 

IF  @vIndex =0
  SET @vResult = @STRING1
ELSE IF @vIndex < 0
  SET @vResult = SUBSTRING(@STRING1, 1, @LENGTH)
ELSE
  SET @vResult = REPLICATE(@STRING2, @vIndex) + @STRING1

 

 SET @vResult = RIGHT(@vResult, @LENGTH)

 

 RETURN (@vResult)
END