티스토리 뷰

반응형




간만에 올리는 포스팅


이번에는


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


이렇게 하면 우리가 원하는 결과를 얻을 수가 있게 된다.


마지막 답만 보면 별거 아닌거 같아도 그 과정을 이해하지 않으면 그건 모르는거나 마찬가지이다.


하지만 이해하면 까먹더라도 나중에 보면 기억난다.


운동선수가 훈련하지 않고 시합에 나갈 수 없듯이 우리도 항상 공부하며 살아야 한다.








반응형
댓글
반응형
03-02 05:55
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/03   »
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
글 보관함