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
운영게시판
최근게시물
MS-SQL Q&A 1844 게시물 읽기
No. 1844
금액을 우리말로 번역(?)
작성자
박통통
작성일
2005-03-24 15:42
조회수
3,731

견적서나 세금계산서에 보시면 금액을 우리말로 적는란이있잖아요..

예들들면 공급금액이 총 7,900,000 이라면

칠백구십만원정..이런거요..

 

위처럼 숫자를 우리말로 번역(?) 할려고 하면 순수 쿼리로 어떤식으로 해야될까요?

조언좀 부탁 드립니다..

 

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

floor와 case when을 사용한 scalar function을 만들어보세요..

 

그럼..

길가는 나그네..님이 2005-03-24 21:13에 작성한 댓글입니다. Edit

네?floor?

scale funtion??

첨 들어보는데 자세히좀 갈쳐주세효...

부탁드립니다요..

박통통님이 2005-03-25 14:48에 작성한 댓글입니다. Edit

먼저 dummy테이블을 하나 만듭니다.

create table dummy_t(

    digit int not null,

    korean varchar(10) not null

)

데이터는 아래처럼 만듭니다.

1 일
2 이
3 삼
4 사
5 오
6 육
7 칠
8 팔
9 구
10 십
100 백
1000 천
10000 만
100000 십
1000000 백
10000000 천
100000000 억
....

주의점은 위에서 보시다 시피 "십만"을 입력하지 않고 "십"을 입력합니다.

십억, 백억 도 마찬가지고요.(십억->십, 백억->백, 천억->천)

이제 사용자 정의 스칼라함수를 만듭니다.

원리는 해당 자리수와 그 값을 한글로 변환해서 이어 붙이는 겁니다.

가령, 200이라면 2 * 100이므로, "이" + "백"하면 된다는 겁니다.

 

create function uf_DigitToKorean(@currency int) returns varchar(1000)
as
begin
 declare @char_currency varchar(100), @len int, @cnt int, @rtn varchar(1000)
 set @char_currency = convert(varchar,@currency)
 set @len = len(@char_currency)
 set @rtn = ''
 set @cnt = 1
 
 while @cnt <= @len begin --입력받은 숫자길이만큼 루프돕니다.
--먼저 자리수의 해당 값의 한글을 찾아 옵니다.

  select @rtn = @rtn + isnull(Korean,'')
  from dummy_t
  where Digit = convert(int,substring(@char_currency, @cnt, 1))
  

--해당 값의 자리수를 구해서 한글을 찾아옵니다

if @@rowcount > 0 begin

  select @rtn = @rtn + isnull(Korean, '')
  from dummy_t
  where Digit = convert(int, '1' + replicate('0',len(substring(@char_currency, @cnt, @len)) -1)) and
   digit <> 1
 end
  set @cnt = @cnt + 1
 end
 
 return @rtn

end

--------------------------------------------

실행결과는 아래와 같습니다.

 

select dbo.uf_DigitToKorean(987654321)

구억팔천칠백육십오만사천삼백이십일

(1개 행 적용됨)

 

 

지나가다님이 2005-03-25 17:35에 작성한 댓글입니다.
이 댓글은 2005-03-25 17:59에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1847동적쿼리 작성관련 [1]
mdh
2005-03-25
2671
1846엑셀데이터 테이블에 insert 할때... [3]
guest
2005-03-25
3247
1845DB2의 데이타는 select는 되는데 update시에러가 발생합니다. [1]
정상현
2005-03-24
3591
1844금액을 우리말로 번역(?) [3]
박통통
2005-03-24
3731
1843IIS로 서버구동 질문입니다. [1]
1
2005-03-23
1831
1842고수님 쿼리문 도움을 주이소 [1]
임정호
2005-03-23
2290
1841personal 버젼인 경우 외부 클라이언트에서 접근이 안돼나요?
나그네
2005-03-23
1828
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다