sub_title
 MSSQL
제   목 MSSQL - 숫자 세자리 마다 콤마(쉼표) 찍기
작성자 다자래 등록일 2008-08-07 18:09:08 조회수 59,243

[MSSQL - 숫자 세자리 마다 콤마(쉼표) 찍기]


- 숫자 세자리 마다 콤마(쉼표) 찍기

MSSQL에서 세자리 마다 콤마를 찍어주기 위해서는 데이타의 형이 money 형으로 저장되어 있던지 money 형으로 컨버팅(converting)이 가능한 값으로 데이타가 저장되어 있어야 만 합니다. 조금 말이 헷갈릴 수도 있는데 한마디로 컬럼의 데이타 형이 varchar라도 반드시 숫자 포맷으로만 저장되어 있으면 가능하다는 말입니다.

아래의 commaTest_tbl은 레코드를 하나 가지고 있으며, column1 컬럼의 값은 "1000000" 으로 가정하겠습니다.

SELECT column1 FROM commaTest_tbl;

일단 column1 의 값이 숫자이기 때문에 money형으로 컨버팅하는 것이 가능합니다. 아래와 같이 convert 함수를 이용해서
money 형으로 컨버팅 합니다.

SELECT convert( MONEY, column1 ) FROM commaTest_tbl

여기에 콤마를 찍기위한 style 값을 주기 위해서 다시한번 컨버팅합니다.

SELECT convert( VARCHAR, convert( MONEY, column1 ), 1 ) FROM commaTest_tbl

출력된 값에서 콤마가 찍힌것은 확인 되었는데 "1,000,000.00" 뒤에 소수점 두자리가 더 붙어 있습니다. 이것은 money 가 우리나라 돈인 원(\)을 뜻하는 데이타 형이 아니라 달러($)를 뜻하는 데이타 형이라 그런것입니다.
그렇다면 이 소수점 두자리를 제거하는 것이 마지막 작업이 되겠습니다.

방법으로는 substring 함수를 이용해 마지막 세자리를 잘라내 버리는 방법이 있겠고, SQL6.5 가 아니라면 replace로 치완해 버리는 손쉬운 방법도 있습니다.

-- substring을 이용한 방법
SELECT substring( convert( VARCHAR, convert( MONEY, column1 ), 1 ), 1, len(convert( VARCHAR, convert( MONEY, column1 ), 1 )) - 3 ) FROM commaTest_tbl

약간 복잡해 보이는데 substring 으로 1 부터 데이타 전체길이 -3 까지 자르는 것에 지나지 않습니다.

-- replace를 이용한 방법
SELECT replace( convert( VARCHAR, convert( MONEY, column1 ), 1 ), '.00', '' ) FROM commaTest_tbl

어느 방법을 이용하든 출력된 값에서 뒤에 소수점 두자리가 제거되고 '1,000,000' 과 같이 출력됨을 확인 하실 수 있을것입니다. 아래는 테이블에서 데이타를 가져오지 않고 콤마(쉼표) 찍기를 확인해 보기 위한 쿼리문입니다.

-- substring을 이용한 방법
SELECT substring( convert( VARCHAR, convert( MONEY, 1000000 ), 1 ), 1, len(convert( VARCHAR, convert( MONEY, 1000000 ), 1 )) - 3 )


-- replace를 이용한 방법
SELECT replace( convert( VARCHAR, convert( MONEY, 1000000 ), 1 ), '.00', '' )  

 

작성자: 다자래(mfcchang@naver.com)
웹제작 토탈 커뮤니티 http://www.webmadang.net
 
5
    
 
0
        list
 
※ 짧은 댓글일수록 예의를 갖추어 작성해 주시기 바랍니다.
line
reply cancel
 
번호 제목 글쓴이 추천 조회 날짜
34  인덱스를 위한 교재 추천 부탁 드립니다.   member 난모르겠 0 / 0 23401 2020-06-28
33  테이블 부하에 대해서...?   member 헨씀히포 0 / 0 23223 2019-05-24
32  MSSQL - 문자함수(len함수와 datalength 함수) 이미지   admin 웹마당넷 3 / 0 41080 2017-09-10
31  MSSQL - 백업 데이터를 다른 데이터베이스로 복원하기 이미지   admin 웹마당넷 6 / 2 29853 2015-07-05
30  MSSQL - SELECT 결과를 테이블로 만들기 이미지   admin 웹마당넷 1 / 0 27708 2015-06-26
29  기본 데이타 베이스 저장소 위치 바꾸기   member 아침마당 1 / 1 26433 2010-11-04
28  SQL Server 2008 복원시 트랜잭션 로그 백업   member 아침마당 1 / 0 26534 2010-09-25
27  SQL 인젝션 공격을 당했을 경우 인젝션 스크립트 지우는 저장 프로시저   member 아침마당 1 / 0 26076 2010-09-14
26  SQL Server 트랜잭션 로그 파일 줄이는 방법   member 아침마당 0 / 1 32447 2010-09-14
25  [MSSQL] SQL Server 2008 테이블 디자인 수정시 주의 사항   member 아침마당 1 / 0 28224 2010-08-22
24  [MSSQL] ISNULL 함수 간단 예제   member 아침마당 4 / 1 47997 2010-08-05
23  MSSQL - SELECT 와 동시에 INSERT 하기   admin 웹마당넷 14 / 3 153919 2009-02-03
22  MSSQL - IDENTITY 값 초기화 하기   admin 웹마당넷 3 / 2 63446 2009-01-27
21  MS-SQL 클러스터드 인덱스를 어떤 컬럼(들)에 생성하는 것이 유리할까?   member 마카로니 0 / 0 30013 2009-01-08
20  테이블 및 개체의 정보를 확인하기 위한 시스템 저장 프로시저(System Stored pr..   admin 웹마당넷 0 / 0 27630 2008-12-20
19  MSSQL 조인(JOIN)을 이용한 UPDATE 및 DELETE   admin 웹마당넷 5 / 0 53898 2008-11-29
18  SQL injection 웹에서 체크하기   member 수확물 0 / 0 26860 2008-10-10
17  MSSQL - CASE WHEN문   member 다자래 1 / 0 69966 2008-09-19
16  [MSSQL] 파티션 정보 검색   member 수확물 0 / 0 28702 2008-09-08
15  [MSSQL] DDL_Trigger_Example   member 수확물 0 / 0 34647 2008-09-08
14  [MSSQL] xml을 이용한 split   member 수확물 1 / 0 28823 2008-08-26
13  MSSQL - UNION ALL을 이용했을때 테이블명 가져오기 이미지   member 다자래 0 / 0 40222 2008-08-21
12  MSSQL - NULL 값을 다른 값으로 대체하기   member 다자래 8 / 4 101415 2008-08-21
11  [MSSQL] View안에 저장프로스져를 쓰는 방법   member 수확물 0 / 0 45389 2008-08-08
10  MSSQL - 숫자 세자리 마다 콤마(쉼표) 찍기   member 다자래 5 / 0 59243 2008-08-07
write
[2] button