[ORACLE] 숫자 3자리마다 콤마찍기
2020. 11. 10. 18:53ㆍDB/쿼리
728x90
숫자 3자리마다 콤마찍는 쿼리
//'1억2십만3백' 콤마찍기
//1. TO_CHAR : 간단하지만 '999,999,999,999' 선언한 포맷의 자릿수만큼 앞에 공백생김
1. TO_CHAR('100200300','999,999,999,999') AS toChar
//2. REGEXP_REPLACE() 함수사용 : 조금 복잡하지만 공백없이 잘 됨
2. REGXP_REPLACE(REVERSE(REGEXP_REPLACE(REVERSE(TO_CHAE('100200300')),'([0-9]{3}','\1,')),'^,','') AS REGEXPREPLACE
REGEXP_REPLACE() 함수원리
1단계 : REVERSE()함수를 통해 값을 역순으로 정렬(뒷자리부터 콤마를 찍기위함)
2단계 : 패턴과 일치하는 값 뒤에 "," 콤마를 삽입
3단계 : REVERSE()함수를 통해 값을 다시 역순으로 정렬
4단계 : 맨 앞의 문자가 콤마","일 경우 공백으로 치환
//REGEXP_REPLACE() 함수 원리
SELECT REVERSE(TO_CAR('100200300')) AS STEP1
,REGEXP_REPLACE(REVERSE(TO_CHAR('100200300')),'([0-9]{3})','\1,') AS STEP2
,REVERSE(REGEXP_REPLACE(REVERSE(TO_CHAR('100200300')), '[0-9]{3})','\1')) AS STEP3
,REGEXP_REPLACE(REVERSE(REGEXP_REPLACE(REVERSE(TO_CHAR('100200300')),'([0-9]{3})','\1')),'^,','') AS STEP4
FROM DUAL;
728x90
'DB > 쿼리' 카테고리의 다른 글
[SQL] 논리연산자 우선순위 (0) | 2022.08.24 |
---|---|
[SQL] 특수문자의 이스케이프 처리방법 (0) | 2022.08.24 |
[ORACLE] 사용자 계정 생성/권한 부여/계정 삭제 (0) | 2020.12.15 |
[ORACLE] 페이징쿼리 (0) | 2020.11.11 |
[ORACLE] OVER() 함수 (0) | 2020.11.05 |