[ORACLE] 숫자 3자리마다 콤마찍기

2020. 11. 10. 18:53DB/쿼리

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;  

 

 

 

출처 : m.blog.naver.com/PostView.nhn?blogId=mk1126sj&logNo=220985940775&proxyReferer=https:%2F%2Fwww.google.com%2F

728x90