오라클 DB에서 숫자를 문자 포맷으로 변경할 때 특정 포맷(123.45 or 0.123)으로 변환하여 출력해야 하는 경우가 있었다.
1. TO_CHAR(값, '포맷') / 9와 0
TO_CHAR( ) 함수를 사용하여 원하는 포맷으로 변환할 수 있다. 이때 9와 0을 사용할 수 있다.
- 9 : 가변 숫자로써 값이 매칭되면 값이 출력되고 그렇지 않다면 공백으로 치환됨
- 0 : 고정 숫자로써 값이 매칭되면 값이 출력되고 그렇지 않다면 0이 출력됨
예제)
SELECT TO_CHAR(123.45, '99') FROM dual;
SELECT TO_CHAR(123.45, '00') FROM dual;
// ### (값보다 포맷이 더 작으면 이처럼 오류가 발생)
SELECT TO_CHAR(123.45, '999') FROM dual;
SELECT TO_CHAR(123.45, '000') FROM dual;
// 123 (123.45가 반올림되어 123이 됨)
SELECT TO_CHAR(123.45, '999.9') FROM dual;
SELECT TO_CHAR(123.45, '000.0') FROM dual;
// 123.5 (0.45가 반올림되어 0.5가 됨)
SELECT TO_CHAR(123.45, '999.99') FROM dual;
SELECT TO_CHAR(123.45, '000.00') FROM dual;
// 123.45
SELECT TO_CHAR(123.45, '999.999') FROM dual;
SELECT TO_CHAR(123.45, '000.000') FROM dual;
// 123.450
SELECT TO_CHAR(123.45, '9999.99') FROM dual; // 123.45 (남는 9가 공백으로 치환됨)
SELECT TO_CHAR(123.45, '0000.00') FROM dual; // 0123.45
SELECT TO_CHAR(0.123, '9.999') FROM dual; // .123 (0.123에서 0이 공백으로 치환됨)
SELECT TO_CHAR(0.123, '0.000') FROM dual; // 0.123
SELECT TO_CHAR(0.123, '99.999') FROM dual; // .123
SELECT TO_CHAR(0.123, '00.000') FROM dual; // 00.123
2. FM
포맷 앞에 'FM' 키워드를 붙이면 매칭된 수를 제외하고 치환된 공백이나 소숫점 이하 0 부분이 삭제된다. 단, 이는 가변 숫자인 9에만 적용되고 고정 숫자인 0에는 적용되지 않는다.
예제)
SELECT TO_CHAR(0.123, '999.9999') FROM dual; // .1230 (소숫점 앞 공백 3자리)
SELECT TO_CHAR(0.123, 'FM999.9999') FROM dual; // .123 (소숫점 앞 공백 없음)
SELECT TO_CHAR(0.123, '000.0000') FROM dual; // 000.1230
SELECT TO_CHAR(0.123, 'FM000.0000') FROM dual; // 000.1230 (포맷 0은 고정이므로 잘리지 않음)
'[DB] > - Oracle' 카테고리의 다른 글
[Oracle] NVL, NVL2 함수 (0) | 2025.05.27 |
---|---|
[Oracle] 정규식 (일반 문자 - Literal Character, 메타 문자 - Meta Character) (0) | 2025.05.27 |
[Oracle] SID, SNAME이란? SNAME 변경 방법 (0) | 2025.05.23 |
[Oracle] RAC(Real Application Cluster)와 HA(High Availability) (0) | 2025.05.22 |
[Oracle] Port 포트 번호 변경하는 방법 (0) | 2025.05.22 |