DB프로그래밍

[PostgreSQL] 숫자에 천단위 콤마(3자리 구분자) 를 적용하는 방법 3가지

PostgreSQL에서 숫자에 천단위 콤마(3자리 구분자) 를 적용하려면 대표적으로 아래 3가지 방법을 사용한다.


1. to_char() 사용 (가장 일반적)

PostgreSQL에서 숫자를 포맷팅할 때 가장 많이 쓰는 방법이야.

✔ 숫자 → 천단위 콤마 문자열

SELECT to_char(1234567, 'FM999,999,999,999') AS formatted;

✔ 소수점 포함

SELECT to_char(1234567.89, 'FM999,999,999,990.00');

2. to_char() + 캐스팅

컬럼 기준으로 많이 사용되는 방식.

SELECT to_char(amount::numeric, 'FM999,999,999,999') 
FROM tb_order;

3. 자동 자릿수 확장 (9→최대 자릿수)

숫자가 얼마나 클지 모르면 "FM999G999G999G999D00" 같은 패턴 사용.

✔ G = 그룹구분자(콤마), D = 소수점

SELECT to_char(amount, 'FM999G999G999G999') FROM tb;

실무에서 가장 추천하는 패턴

정수일 때:

SELECT to_char(col, 'FM999,999,999,999') FROM table;

소수점 2자리 고정:

SELECT to_char(col, 'FM999,999,999,990.00') FROM table;

WHERE 절에는 사용하면 안 됨

to_char()는 문자열을 반환하므로,
정렬·비교가 필요한 경우 SELECT 에서만 포맷팅하고
WHERE / ORDER BY는 원래 숫자 컬럼 사용해야 해.

SELECT to_char(price, 'FM999,999,999') AS price_str
FROM tb_product
ORDER BY price;  -- O (정상)

Hi, I’m 똘켓