ms-sql 숫자 천단위 콤마 표시하기
간만에 올리는 포스팅
이번에는
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
이렇게 하면 우리가 원하는 결과를 얻을 수가 있게 된다.
마지막 답만 보면 별거 아닌거 같아도 그 과정을 이해하지 않으면 그건 모르는거나 마찬가지이다.
하지만 이해하면 까먹더라도 나중에 보면 기억난다.
운동선수가 훈련하지 않고 시합에 나갈 수 없듯이 우리도 항상 공부하며 살아야 한다.