[Oracle] 오라클 숫자 정렬 오류 해결 방법 (문자형 컬럼)

오라클 쿼리에서 숫자 값을 정렬(ORDER BY) 하였는데 뒤죽박죽 순서가 섞여서 조회되는 경우가 있다. 이런 경우는 대부분 컬럼 타입이 문자형(VARCHAR)인 경우가 많다.

 

숫자형 문자 컬럼인 경우 컬럼의 값을 TO_NUMBER 함수를 사용하여 숫자 타입으로 변경하거나, LPAD 함수를 사용하여 숫자 앞에 컬럼의 길이만큼 "0"을 붙여서 조회하면 된다.

 

TO_NUMBER( ) 함수를 사용하는 방법 (컬럼의 값이 모두 숫자인 경우 사용)

SELECT *
  FROM dept
 ORDER BY TO_NUMBER(dept_id)

 

LPAD( ) 함수를 사용하는 방법 (컬럼의 값이 숫자 + 문자인 경우 사용)

SELECT *
  FROM dept
 ORDER BY LPAD(dept_id, 3, '0')

- 컬럼의 길이만 큼 앞자리를 "0" 으로 채운다 (dept_id 컬럼 길이는 "3") 

 

컬럼 타입이 문자형(VARCHAR)인경우 문자의 첫번째 자리를 우선으로 정렬된다

 

 

dept_id 컬럼은 VARCHAR2(3)인 것을 확인할 수 있다

 

 

사용_예제_쿼리.txt
0.00MB

 

사용 예제

예제 1 -  TO_NUMBER( ) 함수를 사용하면 숫자가 올바르게 정렬된다

 

 

예제 2 - LPAD( ) 함수를 사용하여 컬럼의 길이만큼 "0" 으로 채우면 순서데로 조회된다

 

 

예제 3 -  TO_NUMBER( ) 함수를 사용할 때 숫자가 아닌 값이 있으면 오류가 발생하며, 이럴때는 LPAD( ) 함수를 사용한다

 

- ORA-01722: invalid number

 

 

댓글

Designed by JB FACTORY