database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 997 게시물 읽기
No. 997
select 문에서 금액을 천단위마다,를 표시하고 싶은데 어찌하면..
작성자
김용운
작성일
2006-05-19 18:28
조회수
7,822

select 문에서 금액을 천단위마다,를 표시하고 싶은데 어찌하면..되는지요..고수님들의 비법전수바랍니다.

이 글에 대한 댓글이 총 1건 있습니다.

Mysql에서 사용하는 format함수를 db2에서 migration하기 위해 UDF함수로 구현한 것입니다.  IBM JAPAN에 있는 분이 만드신 것인데 그대로 하면 함수 생성이 안되어서 약간 수정하였습니다. 참고하세요 ^^

 

--
-- DB2 UDB UDF(User-Defined Function) Samples for Migration
--
-- Created: 2004/03/08
--
-- Name of UDF: FORMAT (X Decimal(31,10), D Integer)
--
-- Used UDF: None
--
-- Description: Returns rounded to the precision specified by D and a "," for each 3 digits as a separator.
--              If D is 0, the result will have no decimal point or fractional part.
--
-- Author: TOKUNAGA, Takashi
--

------------------------------ Command Entered ------------------------------
CREATE FUNCTION FORMAT (X Decimal(31,10), D Integer)
RETURNS VARCHAR(50)
LANGUAGE SQL
SPECIFIC FORMAT_MySQL
CONTAINS SQL
NO EXTERNAL ACTION
DETERMINISTIC
BEGIN ATOMIC
DECLARE XN     DECIMAL(21,0);
DECLARE RetVal VARCHAR(50);

IF D > 0 THEN
   SET RetVal = SUBSTR(CHAR(ABS(X)+0.5*DECIMAL(POWER(0.1,D),11,10)),21, D+1);
ELSE
   SET RetVal = '';
END IF;

SET XN = ABS(X)+0.5*DECIMAL(POWER(0.1,D),11,10);
Main_Loop:
WHILE XN > 0 DO
--   SET RetVal = SUBSTR(CHAR(MOD(XN,1000)),19,3) || RetVal;
   SET RetVal = SUBSTR(CHAR(dec(MOD(bigint(XN),1000),21,0)),19,3) || RetVal;
   SET XN = XN/1000;
   IF XN > 0 THEN
      SET RetVal = ',' || RetVal;
   ELSE
      LEAVE Main_Loop;
   END IF;
END WHILE;

RETURN CASE WHEN X < 0 THEN '-' ELSE '' END
       || TRANSLATE(LTRIM(TRANSLATE(RetVal,' ','0')),'0',' ');
END!

 

 

 

select format(123456,0) from sysibm.sysdummy1

1
---------------------------------------------
123,456

brahman님이 2006-05-20 02:43에 작성한 댓글입니다.
이 댓글은 2006-05-20 02:46에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1001jdbc type 3연결에 대해서 [1]
db2
2006-05-22
8011
1000DISTINCT 질문입니다.(초보) [1]
강세형
2006-05-22
6862
998SQL2025N An I/O error "-40" occurred on media "TSM".
db2
2006-05-20
5571
997select 문에서 금액을 천단위마다,를 표시하고 싶은데 어찌하면.. [1]
김용운
2006-05-19
7822
996우편번호 데이터베이스 만들기.. [1]
김재열
2006-05-19
5425
995db2 테이블 Locking 문제 [3]
최병석
2006-05-17
6587
994Timestamp 데이터에서 시간은 그대로두고 날짜만 바꿀 수 있나요? [3]
tari
2006-05-15
6174
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다