[Oracle] 천단위 구분기호 출력하는 방법

2022. 6. 23. 16:48·Database/Oracle
반응형

오라클에서 숫자데이터를 천단위마다 ','로 구분하여 조회하는 방법을 알아보겠습니다.

방법은 크게 2가지로 나눌 수 있습니다.

 

방법 1. TO_CHAR 사용하기

참고. TO_CHAR 함수란?

👉 날짜, 숫자 등의 값을 문자열로 변환하는 함수

 

TO_CHAR 함수를 사용하여 포맷을 다음과 같이 지정해줍니다.

'FM999,999'

  • FM: 소수점 이상의 공백 및 소수점 이하의 0 제거
  • 9: 해당 자리의 숫자. 값이 없을 경우 소수점 이상은 공백, 소수점 이하는 0으로 표시
  • 0: 해당 자리의 숫자. 값이 없을 경우 0으로 표시 👉 값을 고정적으로 표시하는 경우에 주로 사용.
SELECT TO_CHAR(123456, 'FM999,999') AS VAL1
FROM DUAL

 

FM을 사용하지 않으면?

그러면, FM을 사용하지 않으면 어떻게 될까요?

아래 쿼리에서 VAL1은 FM을 사용하고 VAL2는 FM을 사용하지 않았습니다.

SELECT TO_CHAR(123456, 'FM999,999,999,999') AS VAL1
	 , TO_CHAR(123456, '999,999,999,999') AS VAL2
FROM DUAL

결과는 다음과 같습니다.

겉으로 보기엔 똑같아 보이지만,

아래 그림과 같이 포맷으로 선언된 자릿수 중 숫자가 존재하지 않는 부분은 공백으로 채워진 것을 확인할 수 있습니다.

자릿수를 고정하는 방법

포맷 부분에 '0'을 사용하면 값이 없을 경우 0으로 표시됩니다.

SELECT TO_CHAR(1234567890, 'FM000,009,999,999,999') AS VAL1
FROM DUAL

 

※ TO_CHAR 함수 사용시 주의사항

그러나, TO_CHAR를 이용한 방식은 지정한 포맷의 자릿수를 넘어가면 문제가 발생합니다.

아래 쿼리에서 포맷은 6자리 이지만, 실제 값은 그 이상입니다.

SELECT TO_CHAR(123456789, 'FM999,999') AS VAL1
FROM DUAL

이때, 결과는 값을 반환하지 못하고 ########으로 표시됩니다.

※ TO_CHAR 함수를 사용 시에는

포맷값을 미래에 올 수 있는 큰 값을 대비하여  최대 길이만큼 미리 선언을 해 놓아야 합니다.

방법 2. 정규식 사용하기

정규식을 이용하는 방법

① 숫자를 뒤집어서 뒤에서부터 3자리마다 콤마(,)를 추가한다.
② 숫자를 다시 뒤집는다.
③ 맨 앞에 콤마(,)가 있으면 치환하여 제거한다.

 

정규식을 이용한 예제

SELECT REGEXP_REPLACE(REVERSE(REGEXP_REPLACE(REVERSE(TO_CHAR(123456789999999999)), '(\d{3})','\1,')), '^,','') AS VAL1    
FROM DUAL

정규식 함수를 사용하면 보기에는 복잡하지만, 

미래값을 예상하여 길이를 지정하지 않아도 된다는 장점이 있습니다.

 

반응형

'Database > Oracle' 카테고리의 다른 글

[Oracle] comment로 테이블, 컬럼 찾기  (2) 2022.08.03
[Oracle] 오라클 날짜, 한글 요일 구하기 (Feat. TO_CHAR)  (0) 2022.07.01
[Oracle] 오라클 TRUNC 함수 사용법 (날짜, 시간, 소수점 절사하기)  (2) 2022.06.30
[Oracle] 해당 월의 말일자만 조회하기, 가장 최근 일자만 조회하기 (Feat. LAST_DAY 함수)  (0) 2022.06.22
[Oracle] 쿼리 속도 향상 시키기 (Feat. 좌변을 가공하지 않기)  (0) 2022.06.10
'Database/Oracle' 카테고리의 다른 글
  • [Oracle] 오라클 날짜, 한글 요일 구하기 (Feat. TO_CHAR)
  • [Oracle] 오라클 TRUNC 함수 사용법 (날짜, 시간, 소수점 절사하기)
  • [Oracle] 해당 월의 말일자만 조회하기, 가장 최근 일자만 조회하기 (Feat. LAST_DAY 함수)
  • [Oracle] 쿼리 속도 향상 시키기 (Feat. 좌변을 가공하지 않기)
Kim-SooHyeon
Kim-SooHyeon
개발일기 및 알고리즘, 블로그 운영에 대한 글을 포스팅합니다. :) 목표: 뿌리 깊은 개발자 되기
    반응형
  • Kim-SooHyeon
    soo_vely의 개발로그
    Kim-SooHyeon
  • 전체
    오늘
    어제
    • 분류 전체보기 (255) N
      • 알고리즘 (108)
        • 자료구조 (3)
        • Java (104)
        • Python (1)
      • Back end (71) N
        • Spring Project (28) N
        • Java (21)
        • API (1)
        • Python (0)
        • Django (3)
        • Linux (1)
        • 서버 (2)
        • 에러로그 (11)
        • 부스트 코스 (1)
      • Front end (9)
        • HTML, CSS (4)
        • JavaScript (4)
        • JQuery (0)
      • 기타 프로그래밍 (4)
        • Android Studio (1)
        • Arduino (2)
        • Azure Fundamental(AZ-900) (1)
      • 개발도구 (24) N
        • IntelliJ (2) N
        • Git (12)
        • SVN (0)
        • Eclipse (2)
        • 기타 Tool (8)
      • Database (16)
        • Oracle (10)
        • MySQL (0)
        • H2 Database (3)
        • ORM & JPA (1)
      • 자격증 (10)
        • 컴활 1급 (7)
        • 컴활 2급 (2)
        • SQLD (1)
      • 기타 (13)
        • 블로그 운영 (6)
        • 문서 (1)
        • 기타 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    1차원 배열
    spring
    for문
    BOJ
    단계별풀기
    springboot
    오라클
    백준알고리즘
    Git
    백준
    배열
    github
    Oracle
    알고리즘
    구현
    문자열
    solved.ac
    백준 자바
    jpa
    java
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Kim-SooHyeon
[Oracle] 천단위 구분기호 출력하는 방법
상단으로

티스토리툴바