[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 | | |