DataBase/Oracle

[Oracle] 숫자 3자리(천단위)마다 콤마(,) 넣어서 출력하기

mingmongs 2025. 6. 10. 18:04

title

쿼리에서 가져온 금액을 화면에 보여줄 때,
쿼리내에서 콤마를 찍은 결과값으로 보여주기 위해
오라클에서 쿼리 결과 값에 천단위(3자리) 마다 콤마를 넣어서
출력하는 두 가지 방법에 대해 알아보자.

 

1) TO_CHAR 함수 활용

: 오라클의 TO_CHAR 함수는 숫자, 날짜, 문자 데이터 유형을
원하는 형식의 문자열로 변환하는 함수이다.
이 함수를 활용하면, 숫자 형태의 값에 3자리마다 콤마를 넣을 수 있다.

1-1) 문법

 TO_CHAR( 수치 값, 패턴 값 )


1-2) 예시

SELECT TO_CHAR('123123123', '999,999,999,999,999')
FROM DUAL
;

 

결과값

img1

 

1-3) 주의점

: 만약 TO_CHAR 함수에 정의한 패턴 값이 조회되는
숫자 값보다 작은 경우에는 값이 출력이 안되기 때문에,
패턴 값은 충분히 큰 값으로 정의해야한다.


예시

SELECT TO_CHAR('123123123', '999,999')
FROM DUAL
;

 

결과값

img2

 

2) REGEXP_REPLACE 함수(정규식) 활용

: 특정 패턴을 찾아 다른 문자열로 대체하는 함수로,
정규표현식을 활용하여 패턴을 지정해주고 변환해줄 수 있다.

2-1) 문법

 REGEXP_REPLACE( 원본 문자열, 정규표현식 패턴, 대체할 문자열, 검색 시작 위치(option) )


2-2) 예시

SELECT REGEXP_REPLACE(REVERSE(REGEXP_REPLACE(REVERSE(TO_CHAR(123123123)), '(\d{3})','\1,')), '^,','')
FROM DUAL;

이 정규식 함수를 활용하려면 조금 복잡하다.

  1. REVERSE 함수를 활용하여 문자열을 뒤집은 뒤,
    뒤에서부터 3자리씩 콤마를 넣음
  2. 콤마를 넣은 문자열을 다시 뒤집은 뒤,
    맨 앞에 콤마가 있을 경우 이를 제거

결과값

img3