작성일자 : 2023-11-06
Ver 0.1.1
1. Intro
프로젝트를 하다보면 Tableau 대시보드에 양적(수치형) 데이터(측정값 in Tableau), 대표적으로 매출 같은 경우 천단위에 콤마(,)를 찍어서 보여달라는 요건이 많다. 이러한 요건은 때에 따라 Tableau 대시보드 이전에 쿼리의 결과에서 이를 표기하여 출력해야 할 수 도 있다.
이번 포스팅에서는 Oracle에서 콤마(,)를 추가하는 법에 대해서 정리해보고자 한다.
2. TO_CHAR() 함수 사용
TO_CHAR 함수 사용을 통해 양적(수치형) 데이터에 천 단위 콤마(,)를 추가하는 방법은 가장 일반적이다.
TO_CHAR 함수를 사용할 때는 두 번째 인자에 데이터의 길이에 맞게 형식을 지정해주어야 한다.
만약 형식의 길이가 작을 경우 원하는 형태로 값을 변환 할 수 없다. 그러므로 형식은 최대 값을 고려하여 선언을 해야한다.
SELECT TO_CHAR(1234567, 'FM999,999,999') AS VALUE
FROM DUAL;
- TO_CHAR() 함수 사용시 주의점
SELECT TO_CHAR(1234567, 'FM999,999,999,999,999,999') AS VALUE1 -- 수치 데이터의 최대 크기 만큼 형식을 지정해야한다.
,TO_CHAR(1234567, 'FM999,999') AS VALUE2 -- 수치 데이터보다 지정 형식 길이가 작으면 원하는 형태로 값을 반환하지 못한다.
,TO_CHAR(1234567, '999,999,999,999') AS VALUE3 -- FM 키워드를 지정하지 않으면 문자열 앞에 공백이 추가된다.
,TO_CHAR(0.1230, 'FM999.9999') AS VALUE4
,TO_CHAR(0.1230, 'FM999.0000') AS VALUE5
,TO_CHAR(0.1230, 'FM000.000') AS VALUE6
,TO_CHAR(0.1230, 'FM000.0000') AS VALUE7
FROM DUAL;
- FM (Format) : 좌우 공백 제거
- 9 : 가변적인 값으로 0이거나 숫자가 없을 시 값을 버린다.
- 0 : 고정적인 값으로 변환된 숫자의 길이를 맞추고 싶을때 0으로 채워주면 된다.
3. 정규식 사용
정규식을 사용하여 콤마(,)를 추가할 경우 수치 데이터의 길이를 미리 지정해 놓지 않아도 된다.
다만, 정규식을 사용하면 쿼리문이 다소 복잡해보이는 경향이 있다.
만약 수치 데이터의 길이를 예측하기 어렵다면, 정규식을 사용하는 것도 좋은 방법이다. 이전에 정규식에 대한 이해가 필요할 것이다.
SELECT REGEXP_REPLACE( # 2. 숫자를 다시 뒤집어서 맨 앞에 콤마가 있을 경우 제거한다.
REVERSE(
REGEXP_REPLACE(REVERSE(TO_CHAR(1234567890)), '(\d{3})','\1,') # 1. 숫자를 뒤집어서 3자리씩 콤마를 추가한다.
), '^,',''
) AS VALUE
FROM DUAL