CREATE FUNCTION LPAD1
(@I_STR VARCHAR(200), @I_STR_LEN INT, @I_FILL_STR VARCHAR)
RETURNS VARCHAR(200)
AS
BEGIN
DECLARE @R_STR VARCHAR(200),
@T_DIFF_LEN INT,
@T_STR_LEN INT,
@O_STR_LEN INT,
@POS INT
SET @O_STR_LEN = LEN(@I_STR)
SET @T_STR_LEN = 0
SET @POS = 1
WHILE @O_STR_LEN >= @POS
BEGIN
IF LEN(UNICODE(SUBSTRING(@I_STR,@POS,@POS+1))) > 3
BEGIN
SET @T_STR_LEN = @T_STR_LEN + 2
END
ELSE
BEGIN
SET @T_STR_LEN = @T_STR_LEN + 1
END
SET @POS = @POS+1
END
SET @T_DIFF_LEN = @I_STR_LEN - @T_STR_LEN
IF @T_DIFF_LEN >= 0
SET @R_STR = REPLICATE(@I_FILL_STR, @T_DIFF_LEN) + @I_STR
ELSE
SET @R_STR = @I_STR
RETURN substring(@R_STR,1,@I_STR_LEN )
END
########################
CREATE FUNCTION RPAD1
(@I_STR VARCHAR(200), @I_STR_LEN INT, @I_FILL_STR VARCHAR)
RETURNS VARCHAR(200)
AS
BEGIN
DECLARE @R_STR VARCHAR(200),
@T_DIFF_LEN INT,
@T_STR_LEN INT,
@O_STR_LEN INT,
@POS INT
SET @O_STR_LEN = LEN(@I_STR)
SET @T_STR_LEN = 0
SET @POS = 1
WHILE @O_STR_LEN >= @POS
BEGIN
IF LEN(UNICODE(SUBSTRING(@I_STR,@POS,@POS+1))) > 3
BEGIN
SET @T_STR_LEN = @T_STR_LEN + 2
END
ELSE
BEGIN
SET @T_STR_LEN = @T_STR_LEN + 1
END
SET @POS = @POS+1
END
SET @T_DIFF_LEN = @I_STR_LEN - @T_STR_LEN
IF @T_DIFF_LEN >= 0
SET @R_STR = @I_STR + REPLICATE(@I_FILL_STR, @T_DIFF_LEN)
ELSE
SET @R_STR = @I_STR
RETURN substring(@R_STR,1,@I_STR_LEN )
END
'030. Database > 02. MS_SQL' 카테고리의 다른 글
[MSSQL] 분할 테이블 (0) | 2012.05.24 |
---|---|
[MSSQL] DB서버 정보 알아내기 SQL (0) | 2012.05.17 |
[MSSQL] 테이블 변경은 이렇게 (0) | 2011.12.07 |
[MSSQL] 날짜함수 변환 (0) | 2011.11.22 |
[MSSQL] 프로시저 내부 문자열 쿼리 처리 이렇게... (0) | 2010.04.29 |
WRITTEN BY
- 테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게