결국 펑션으로 처리는 했으나 성능이 이슈가 되지 않을까 생각됩니다
오라클에서도 펑션은 상당한 성능저하를 초래하더라구요
오라클의..
SELECT
LPAD(TO_CHAR(SUM(INVIEW.BDR),'9,999,999,999,999'),20,' ')||
LPAD(TO_CHAR(SUM(INVIEW.BCR),'9,999,999,999,999'),20,' ')||
LPAD(TO_CHAR(SUM(INVIEW.DR) ,'9,999,999,999,999'),20,' ')||
LPAD(TO_CHAR(SUM(INVIEW.CR) ,'9,999,999,999,999'),20,' ')||
' '
FROM
를 아래와 같이...
SELECT
DBO.LPAD(DBO.ADDCOMMA(9876543210987),20,'_') +
DBO.LPAD(DBO.ADDCOMMA(9876543210987),20,'_') +
DBO.LPAD(DBO.ADDCOMMA(9876543210987),20,'_') +
DBO.LPAD(DBO.ADDCOMMA(9876543210987),20,'_') +
'_______'
결과값
_____876,543,210,987_____876,543,210,987_____876,543,210,987_____876,543,210,987_______
'_' 만 ' ' 로 바꾸면 되겠죠
##############
CREATE FUNCTION ADDCOMMA
(@I_MONEY DECIMAL)
RETURNS VARCHAR(200)
AS
BEGIN
DECLARE @R_STR VARCHAR(200),
@T_STR VARCHAR(200),
@T_STR_LEN INT,
@T_POS INT
SET @R_STR = ''
SET @T_STR = REVERSE(@I_MONEY)
SET @T_STR_LEN = LEN(@T_STR)
SET @T_POS = 0
WHILE @T_STR_LEN/3 > @T_POS
BEGIN
IF @T_POS=0
SET @R_STR = SUBSTRING(@T_STR,1,3)
ELSE
SET @R_STR = @R_STR + ',' + SUBSTRING(@T_STR,@T_POS*3+1,3)
SET @T_POS = @T_POS+1
END
RETURN REVERSE(@R_STR)
END
#############
CREATE FUNCTION LPAD
(@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
SET @T_DIFF_LEN = @I_STR_LEN - LEN(@I_STR)
IF @T_DIFF_LEN >= 0
SET @R_STR = REPLICATE(@I_FILL_STR, @T_DIFF_LEN) + @I_STR
ELSE
SET @R_STR = @I_STR
RETURN @R_STR
END
오라클에서도 펑션은 상당한 성능저하를 초래하더라구요
오라클의..
SELECT
LPAD(TO_CHAR(SUM(INVIEW.BDR),'9,999,999,999,999'),20,' ')||
LPAD(TO_CHAR(SUM(INVIEW.BCR),'9,999,999,999,999'),20,' ')||
LPAD(TO_CHAR(SUM(INVIEW.DR) ,'9,999,999,999,999'),20,' ')||
LPAD(TO_CHAR(SUM(INVIEW.CR) ,'9,999,999,999,999'),20,' ')||
' '
FROM
를 아래와 같이...
SELECT
DBO.LPAD(DBO.ADDCOMMA(9876543210987),20,'_') +
DBO.LPAD(DBO.ADDCOMMA(9876543210987),20,'_') +
DBO.LPAD(DBO.ADDCOMMA(9876543210987),20,'_') +
DBO.LPAD(DBO.ADDCOMMA(9876543210987),20,'_') +
'_______'
결과값
_____876,543,210,987_____876,543,210,987_____876,543,210,987_____876,543,210,987_______
'_' 만 ' ' 로 바꾸면 되겠죠
##############
CREATE FUNCTION ADDCOMMA
(@I_MONEY DECIMAL)
RETURNS VARCHAR(200)
AS
BEGIN
DECLARE @R_STR VARCHAR(200),
@T_STR VARCHAR(200),
@T_STR_LEN INT,
@T_POS INT
SET @R_STR = ''
SET @T_STR = REVERSE(@I_MONEY)
SET @T_STR_LEN = LEN(@T_STR)
SET @T_POS = 0
WHILE @T_STR_LEN/3 > @T_POS
BEGIN
IF @T_POS=0
SET @R_STR = SUBSTRING(@T_STR,1,3)
ELSE
SET @R_STR = @R_STR + ',' + SUBSTRING(@T_STR,@T_POS*3+1,3)
SET @T_POS = @T_POS+1
END
RETURN REVERSE(@R_STR)
END
#############
CREATE FUNCTION LPAD
(@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
SET @T_DIFF_LEN = @I_STR_LEN - LEN(@I_STR)
IF @T_DIFF_LEN >= 0
SET @R_STR = REPLICATE(@I_FILL_STR, @T_DIFF_LEN) + @I_STR
ELSE
SET @R_STR = @I_STR
RETURN @R_STR
END
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
6 | 데이타에 한글로 공백이 있는 경우 값을 가져오지 못하고 오류가 발생하는 경우 처리 | 구퍼 | 2009.03.23 | 5871 |
5 | mssql update예제(select ~ update) | 구퍼 | 2008.10.31 | 6318 |
4 | Update ~ Select 구문 예제 | 구퍼 | 2008.10.31 | 4699 |
3 | 분산트랜젝션 가능여부 확인 방법 | 하늘과컴 | 2008.05.29 | 5121 |
2 | 순환구조에서 임시테이블에 하위 조직을 엮어서 넣는 프로시져 | 하늘과컴 | 2007.10.01 | 5311 |
» | ORACLE -> MSSQL 시 LPAD 처리 | 운영자 | 2003.10.08 | 4268 |