DataBase/MS-SQL / / 2007. 12. 4. 09:51

MS-SQL 특정 문자로 채워넣기..

반응형

/*
     * FUNC    명: F_TO_CHAR
     * FUNC  기능: 문자열 앞 또는 뒤에 해당 문자열로 채워넣음 총 길이에 따라
     * 입 력 변수: @SrcStr   VARCHAR(1000)  -- 대상 문자열
                       @Char    CHAR(1)    -- 채워넣을 문자
                       @Len    INT     -- 총 길이 ( 양수일경우 오른쪽, 음수일 경우 왼쪽에 채워넣음)
                       @LenType   INT     -- 길이 계산 형태 (LEN 함수 사용 : 0, DATALENGTH 함수 사용 1)
     * 반  환  값: VARCHAR(1000) : 소스 문자열에 채워넣은 문자 포함한 문자열
     * 작성  일자: 2007-12-03
     * 작  성  자: 안상욱
     * 최종수정일:  
     * 최종수정자:  
     * 수정  이력:
     * 실행  예제: SELECT F_TO_CHAR('12', '0', -30, 0)
     * 비      고:
                       오라클의 TO_CHAR 의 일부 기능을 구현 해본것.
                       사실.. TO_CHAR라는 이름으로 하기에는.. 맞지 않는것 같다..
                       구현된 내용은 대상 문자열의 길이를 맞추는데 해당 길이에 모자랄 경우
                        특정 문자 즉 ' ', '0' ... 등 으로 채워넣는 형태의 함수이다.
                       구현 방식은 간단하다.
                       MS-SQL에서 제공하는  REPLICATE 함수를 사용하여
                       매개변수 중에서 총 길이 넣는 부분에 음수일 경우 좌측에 채워 넣고 양수일 경우
                       우측에 채워 넣도록 한다.
                       @LenType 길이 형태는 일반 문자 단위 길이를 나타낼 것인지 혹은 바이트 단위 길이로
                        처리할 것인지를 의미한다. 그냥 바이트 단위 길이로 셋팅하면 되지만..
                       그냥 옵션으로 두었다..
*/

CREATE FUNCTION F_TO_CHAR
(
   @SrcStr    VARCHAR(1000) ,  -- 대상 문자열
   @Char      CHAR(1)   ,          -- 채워넣을 문자
   @Len        INT    ,                -- 총 길이 ( 양수일경우 오른쪽, 음수일 경우 왼쪽에 채워넣음)
   @LenType INT                     -- 길이 계산 형태 (LEN 함수 사용 : 0, DATALENGTH 함수 사용 1)
)
RETURNS VARCHAR(1000)
AS
BEGIN

      DECLARE @l_RETURN_DATA   VARCHAR(1000)
 
      SET @l_RETURN_DATA = ''

      IF (@Len  > 0)  -- 오른쪽에 채워넣음
        
BEGIN
            SET @l_RETURN_DATA = @SrcStr  + REPLICATE(@Char, ABS(@Len) - CASE @LenType WHEN 0 THEN LEN(@SrcStr) ELSE DATALENGTH(@SrcStr) END);
        
END
     ELSE      
-- 왼쪽에 채워넣음
        BEGIN
            SET @l_RETURN_DATA = REPLICATE(@Char, ABS(@Len) - CASE @LenType WHEN 0 THEN LEN(@SrcStr) ELSE DATALENGTH(@SrcStr) END) + @SrcStr;
       
END

 
     RETURN @l_RETURN_DATA;
END

반응형

'DataBase > MS-SQL' 카테고리의 다른 글

MS-SQL .. ORACLE 의 TRUNC 따라 하기..  (0) 2007.12.04
MS-SQL에서 난수 만들기..  (0) 2007.10.18
[MSSQL] 날짜 형식 변환  (0) 2007.09.04
MS-SQL에서 Stored Procedure 내용 검색...  (0) 2007.08.24
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유