일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 아이코스 청소
- 조용한 게스트하우스
- 레이싱시트
- java
- 동해 게스트하우스
- SonarScanner
- 가상 광 디스크
- 103LAB
- 플레이시트 챌린지
- Radler
- playseat challenge
- 클리닝스틱 가격
- DB계정락
- TMRecovery
- ptree
- 경포가시연습지
- 뮌헨 맛집
- Oracle
- 동해
- 클리닝스틱 구매
- 정적분석
- 설치
- pfiles
- 소나스캐너
- 소나큐브
- 클리닝스틱
- sqlite-jdbc
- 소스코드 정적분석
- KARMOR
- 아이코스 클리닝스틱
- Today
- Total
티끌모아부자
[Oracle] VARCHAR2 컬럼의 ORDER BY 본문
오라클에서 VARCHAR2 컬럼이나 문자가 아니라 숫자형태의 데이터인 상황이다.
이 데이터에 대해서 order by를 하면 일반적으로 숫자의 크기에 따라 나오는게 아니라 다르게 나온다.
테이블과 데이터 기본 셋팅이다. COL1이 VARCHAR2형태이고 여기에 숫자형태의 데이터를 문자로 입력하였다.
COL1을 그냥 order by 하면 일단 문자열 첫자리를 기준으로 1인 데이터가 나오고 첫자리가 2, 3 인 데이터가 이어서 나온다.
숫자형태의 문자형 데이터 컬럼을 숫자순서로 비교하려면 to_number()를 사용해서 정렬하면 된다!! 간단함.
정말 별거아닌데 실수할 수도 있으니 조심조심하자...!
※ 참고로 오라클에서 계층구조를 얻어내기 위해서 START WITH ~ CONNECT BY를 사용하는데, 계층별로 정렬하기 위해서 ORDER SIBLINGS BY 를 사용한다. 여기서도 마찬가지로 숫자형태의 문자컬럼을 숫자크기에 따라 정렬하려면 to_number()함수를 사용한다.
SELECT
/*컬럼*/,
LEVEL as lvl
FROM
/*테이블*/
WHERE /* 조건*/
START WITH /*기준*/
CONNECT BY PRIOR /*기준*/
ORDER SIBLINGS BY to_number(/*정렬컬럼*/)
'IT-DB > Oracle' 카테고리의 다른 글
[Oracle] DB 사용하기(Oracle SQL Developer) (0) | 2017.04.08 |
---|---|
[Oracle] DB 설치하기( Oracle Database Express Edition 11g) (0) | 2017.04.08 |