티스토리 뷰
간만에 올리는 포스팅
이번에는
MS-SQL에서
숫자표시를 할 때
천단위로 콤마를 찍는 방법에
대해서 끄적여 보기로 한다.
VB에서는
format이란 함수를 이용해서
"###,0"과 같이 변환이 가능하지만
ms-sql에서는 어떻게 해야 할까.
물론 함수를 사용해서 위와 같은
효과를 낼 수는 있지만 다른점이 있다면
조합을 해야한다는 정도?
아무튼 이 방법도 어떻게 구현해야 하나
고민하게 만니 이것도 이것 나름대로 재미가 있다. ㅎㅎㅎ
실제로 사용되는 함수들은 다음과 같다.
cast, convert, replace
그리고 사용할 데이터 형
varchar, money
위 함수들과 데이터형이 어떤 놈들인지, 어떻게 사용하는건지에 대해서는 여기서 말하지는 않겠다.
다만, 항상 모르면 물어봐야 할 F1도움말에 잘 나와 있으니(있을듯...?) 공부는 각자 하는거고...
아무튼 본론으로 들어가서.....
예를 들어
1000이라는 숫자에 대해 천단위 콤마를 찍으려고 한다면
먼저 숫자를 money형으로 변환을 시켜줘야 한다.
cast(1000 as money) 결과 -> 1000.0000 왜 이렇게 되는지는 moeny 데이터형을 공부할 것.
그 다음 money형의 데이터를 convert 함수의 인자값을 이용해서 콤마를 표현
convert(varchar(30), cast(1000 as money), 1) 결과 -> 1,000.00
아래는 참고로 봐주면 좋다(출처 F1 온라인 도움말)
다음 표에서 왼쪽 열은 money 또는 smallmoney를 문자 데이터로 변환하기 위한 style 값을 나타냅니다.
값 | 출력 |
---|---|
0(기본값) | 소수점 왼쪽의 세 자릿수마다 쉼표를 사용하지 않으며, 소수점 오른쪽에 두 자리가 나타납니다(예: 4235.98). |
1 | 소수점 왼쪽의 세 자릿수마다 쉼표를 사용하며, 소수점 오른쪽에 두 자리가 나타납니다(예: 3,510.92). |
2 | 소수점 왼쪽의 세 자릿수마다 쉼표를 사용하지 않으며, 소수점 오른쪽에 네 자리가 나타납니다(예: 4235.9819). |
여기까지 했으면 다 된거긴 한데.... 끝네 소수점 오른쪽 두 자리가 신경이 쓰인다..
그래서 마지막으로
replace(convert(varchar(30), cast(1000 as money), 1), '.00', '') 결과 -> 1,000
이렇게 하면 우리가 원하는 결과를 얻을 수가 있게 된다.
마지막 답만 보면 별거 아닌거 같아도 그 과정을 이해하지 않으면 그건 모르는거나 마찬가지이다.
하지만 이해하면 까먹더라도 나중에 보면 기억난다.
운동선수가 훈련하지 않고 시합에 나갈 수 없듯이 우리도 항상 공부하며 살아야 한다.
'DB(MS, Oracle, PG, MY..etc)' 카테고리의 다른 글
MS-SQL 2003, 2008등에서 연결된 서버 연결하기(linked server) (0) | 2013.07.05 |
---|---|
[MS-SQL] 복수의 인스턴스가 설치되었을 경우 포트 설정 (0) | 2013.06.26 |
mssql 컬럼 추가 및 테이블 이름 변경 (0) | 2012.12.11 |
MySql MyODBC 5.2 연결 문제 (4) | 2012.11.07 |
mssql 2008 설치 시 "성능 카운터 레지스트리 하이브 일관성" 문제 (2) | 2012.08.08 |
- Total
- Today
- Yesterday
- 플래시
- 플래쉬
- 추억의 게임
- 8비트상성
- 고전명작
- 플래쉬게임
- brawlstars
- 오락실게임
- 플래쉬 게임
- xml강좌
- C
- J.S Bach
- c#
- 브롤스타즈
- 틀린그림찾기
- Excel
- 플래시게임
- 엑셀
- 오락실 게임
- 플래시 게임
- XML Programming with VB 6.0
- XML
- 좀비게임
- 고전게임
- 레트로게임
- MS-SQL
- 중독성짱게임
- 다른그림찾기
- SQL
- 8비트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |