어떠한 숫자에 천단위로 콤마(,)를 찍고 싶으면 어떻게 해야할까요? 오라클에서는 TO_CHAR 함수 혹은 정규식 함수 (REGEXP_REPLACE) 를 이용해서 천단위로 콤마(,)를 찍을 수 있습니다. 두 가지 방법에 대한 장단점과 사용 방법에 대해서 알아보겠습니다.
TO_CHAR 함수를 이용하는 방법
SELECT TO_CHAR(10000000000, 'FM999,999,999,999') AS MONEY
FROM DUAL;
천단위 콤마(,)를 표현하기 위해서는 TO_CHAR 함수의 두 번째 인자값을 이용하면 된다.
TO_CHAR 함수를 이용해서 천단위를 표현하면
첫 번째 인자값보다 더 큰 길이의 두 번째 인자값을 미리 작성해야한다.
SELECT TO_CHAR(10000000000, 'FM999,999,999,999') AS MONEY
, TO_CHAR(10000000000, 'FM999,999,999') AS MONEY2
, TO_CHAR(10000000000, '999,999,999,999') AS MONEY3
FROM DUAL;
위의 결과값에서 MONEY2 보면 알 수 있듯이 첫 번째 인자값이 더 크면 #### 으로 출력이 된다. 그렇기 때문에 미리 첫 번째인자값을 예상하고 최대 크기만큼의 값을 선언해야한다. 또한 FM 키워드를 사용하지 않으면 앞부분에 공백이 생겨서 출력된다.
정규식 함수를 이용하는 방법
SELECT REGEXP_REPLACE(REVERSE(REGEXP_REPLACE(REVERSE(TO_CHAR(100000000000)), '(\d{3})', '\1,')), '^,', '') AS MONEY
FROM DUAL;
REVERSE(TO_CHAR(100000000000)), '(\d{3})', '\1,')) : 숫자를 뒤집어서 뒤에서부터 3자리씩 콤마(,)를 추가한다.
REGEXP_REPLACE(REVERSE(REGEXP_REPLACE( ···· ), '^,', '') : 숫자를 다시 뒤집어서 맨 앞에 콤마가 있을 경우 제거한다.
다소 복잡해보일 수 있지만 REVERSE 함수를 함께 사용해서 콤마를 찍은 후에 맨 앞에 콤마가 있다면 삭제하는 과정을 거친다. TO_CHAR 함수처럼 최대 크기를 미리 예상해서 두 번째 인자값을 채울 필요가 없다. 정규식을 잘 알고 있다면 가장 좋은 방법이다.
'개발 & 데이터베이스 > DB' 카테고리의 다른 글
오라클 개발 환경 구축하기 (개발 툴 설치 방법) (0) | 2022.08.29 |
---|---|
오라클 조회 결과 정렬하는 방법 (ORDER BY 절) (0) | 2022.08.28 |
오라클 디비링크 (DB LINK) 정의 및 생성 권한 부여 (0) | 2022.08.20 |
오라클 해당 날짜 요일 구하기 (TO_CHAR 함수) (0) | 2022.08.20 |
오라클 중복 데이터 쉽고 빠르게 찾는 방법 (GROUP BY, OVER) (0) | 2022.08.18 |