결국 펑션으로 처리는 했으나 성능이 이슈가 되지 않을까 생각됩니다
오라클에서도 펑션은 상당한 성능저하를 초래하더라구요
오라클의..
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
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
86 | sql 문 실행명령 | 원우석 | 2004.07.31 | 3500 |
85 | DB2 종료후 다시 시작 | 원우석 | 2004.07.31 | 2660 |
84 | lock 상태 확인 | 원우석 | 2004.07.31 | 4803 |
83 | sybase DB에서 파일로 백업을 받구 그파일을 다시 DB2로 임포트하는방법 | 원우석 | 2004.07.31 | 3748 |
82 | 임포트시 테이블에 데이터를 모두 클리어 할때 | 원우석 | 2004.07.31 | 2793 |
81 | 특정테이블을 백업받을때 | 원우석 | 2004.07.31 | 3093 |
80 | DB를 백업받을때 | 원우석 | 2004.07.31 | 2811 |
79 | 카탈로그 파일 내용보기 | 원우석 | 2004.07.31 | 2988 |
78 | 데이타 모델링(이화식 강의) 부분 목차정리. | 박상현 | 2004.06.22 | 3124 |
77 | oracle 8i제공 explan table 생성 script | 박상현 | 2004.05.08 | 2493 |
76 | toad에서 사용가능한 explan_table생성 script | 박상현 | 2004.05.08 | 6381 |
75 | 오라클 DUAL Table처럼 DB2에서 임시 테이블 사용하기 | 원우석 | 2004.01.08 | 4213 |
» | ORACLE -> MSSQL 시 LPAD 처리 | 운영자 | 2003.10.08 | 4050 |
73 | Unix, Oracle, Pro*C작성 입찰공고 | 운영자 | 2003.06.05 | 4354 |
72 | Unix, Oracle, Pro*C작성 구인구직게시판 | 운영자 | 2003.06.05 | 4729 |
71 | Unix, Oracle, Pro*C작성 자유게시판 | 운영자 | 2003.06.05 | 4595 |
70 | plan table(sql실행계획) 보는 select문 | 운영자 | 2003.01.28 | 3831 |
69 | java에서 array처리 방법 | 운영자 | 2003.01.27 | 6033 |
68 | 효율적인 25가지 SQL작성법 | 운영자 | 2003.01.04 | 2911 |
67 | 중복 data는 처음에만 display 하게 하는 방법 | 운영자 | 2002.11.23 | 2852 |