728x90
반응형
오라클 천단위 콤마(,) 찍는 방법
1. TO_CHAR 함수 활용
2. 정규식 활용
TO_CHAR 기본문법 및 샘플코드
SELECT TO_CHAR([숫자 컬럼], [패턴]) FROM [테이블];
SELECT
TO_CHAR(123456789, 'FM000,000,000') AS "val",
LENGTH(TO_CHAR(123456789, 'FM000,000,000')) AS "length"
FROM dual;
--결과 : val = 123,456,789, length 11
SELECT TO_CHAR(123456789, '000,000') AS "val" FROM dual;
--결과 : ########
SELECT
TO_CHAR(123456789, '000,000,000') AS "val",
LENGTH(TO_CHAR(123456789, '000,000,000')) AS "length"
FROM dual;
--결과 : val = 123,456,789, length 12
샘플코드를 3가지로 나누어 보았다. 각 코드는 패턴값에 따라 다른 값을 리턴해주고 있다. 중요!
첫번째 : FM키워드를 사용하여, 문자열 맨 앞에 공백이 붙지 않음 => 길이 11
두번째 : 숫자값보다 패턴값이 작으면 값을 리턴하지 못함.
세번째 : FM키워드를 사용하지 않아, 문자열 맨 앞에 공백이 붙음 => 길이 12
결국 중요한 건, 패턴값이 숫자값보다 길어야 한다는 것인데, 그럴 때는 안전하게
FM000,000,000,000,000,000,000과 같이 엄청 길게 써주면 된다.
하지만 예외의 상황으로 패턴값보다 큰 숫자가 들어 올 경우를 대비하고 싶을 때는 정규식 표현을 사용하면 된다.
정규식 사용 기본문법 및 샘플코드
SELECT REGEXP_REPLACE(REVERSE(REGEXP_REPLACE(REVERSE(TO_CHAR([숫자컬럼])),
'(\d{3})','\1,')), '^,','') AS val
FROM [테이블];
SELECT REGEXP_REPLACE(REVERSE(REGEXP_REPLACE(REVERSE(TO_CHAR(999999999999)),
'(\d{3})','\1,')), '^,','') AS val
FROM dual;
--결과 : 999,999,999,999
보기에는 조금 어지럽지만, 그래도 얼마나 큰 숫자가 들어올 지 예측되지 않는 상황에서는
안전하게 정규식함수를 사용하는 것도 좋은 방법이다.
728x90
반응형
'데이터베이스 > Oracle' 카테고리의 다른 글
[Oracle] 오라클 임시테이블 Dual에 대해서 알아보자. ( 오라클에서 더미데이터 활용하기 ) (0) | 2022.07.09 |
---|---|
[Oracle] ORA-01790: expression must have same datatype as corresponding expression 에러 (0) | 2022.07.09 |
[Oracle] 오라클 SUBSTR, SUBSTRB 함수를 사용하여 문자열 자르기 (0) | 2022.07.09 |
[Oracle] 오라클 TRIM, LTRIM, RTRIM 함수를 사용하여 공백 및 반복, 특정문자 제거해보자. (0) | 2022.07.09 |
[Oracle] 오라클 SYSDATE를 통한 오늘 날짜 가져오기 / 날짜포맷 및 문자열 변환 (0) | 2022.07.04 |