티스토리 뷰
오라클에서는 일반적으로 정렬을 하게 되는 경우 ASC(오름차순),DESC(내림차순)를 이용해서 데이터를 정렬을 합니다.
그런데 예외적으로 정령을 처리 해야 하는 경우가 생기게 됩니다. 가령 데이터에 월,화,수,목,금,토,일에 들어가 있다면 의도는 월~일까지 순서대로 정렬하고 싶은데, ASC(오름차순),DESC(내림차순)을 이용해서 정렬 하는 경우 원하는 정렬 결과가 나오지 않습니다. 이럴때 사용하는 것이 바로 커스텀 정렬입니다.
커스텀 정렬은 컬럼의 데이터를 가지고 오라클 내 정렬방법이 아니라 사용자가 직접 정렬순서를 설정할수 있도록 할 수 있도록 해주는 기능입니다. 임의의 테이블을 만들고 데이터를 INSERT 한 후에 특정 정렬순서에 따라 정렬하는 간단한 예제를 알아보도록 하겠습니다.
테이블 생성
1 2 3 4 5 6 7 8 9 10 11 12 13 | CREATE TABLE member( no NUMBER PRIMARY KEY, phone VARCHAR2 (16), name VARCHAR2 (32) week VARCHAR2 (6) ); INSERT INTO member VALUES (100, '010-1234-5678', '홍길동','월요일'); INSERT INTO member VALUES (200, '02-1234-5678', '갑돌이','수요일'); INSERT INTO member VALUES (300, '010-987-6543', '아무개','금요일'); INSERT INTO member VALUES (400, '031-123-5678', '갑순이','화요일'); INSERT INTO member VALUES (500, '052-1234-5678', '철수','목요일'); INSERT INTO member VALUES (600, '001-987-6543', '영희','토요일'); INSERT INTO member VALUES (700, '063-123-6543', '철희','일요일'); | cs |
일반 정렬
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | SELECT * FROM member ORDER BY WEEK /** 실행 결과 NO PHONE NAME WEEK 300 010-987-6543 아무개 금요일 500 052-1234-5678 철수 목요일 200 02-1234-5678 갑돌이 수요일 100 010-1234-5678 홍길동 월요일 700 063-123-6543 철희 일요일 600 001-987-6543 영희 토요일 400 031-123-5678 갑순이 화요일 **/ | cs |
커스텀 정렬
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | SELECT * FROM member ORDER BY CASE WHEN WEEK='일요일' THEN 1 WHEN WEEK='월요일' THEN 2 WHEN WEEK='화요일' THEN 3 WHEN WEEK='수요일' THEN 4 WHEN WEEK='목요일' THEN 5 WHEN WEEK='금요일' THEN 6 WHEN WEEK='토요일' THEN 7 ELSE 99 END ASC /** 실행 결과 NO PHONE NAME WEEK 700 063-123-6543 철희 일요일 100 010-1234-5678 홍길동 월요일 400 031-123-5678 갑순이 화요일 200 02-1234-5678 갑돌이 수요일 500 052-1234-5678 철수 목요일 300 010-987-6543 아무개 금요일 600 001-987-6543 영희 토요일 **/ | cs |
사용자 입맛에 맞게 특정 컬럼에 데이터값에 따라 정렬순서를 임의로 설정하여 정렬처리 할 수 있습니다.
각각의 상황에 맞게 커스터마이징 해서 사용 하시면 될것 같습니다.
'IT > DB' 카테고리의 다른 글
[오라클]Delete와Truncate 차이점 알아보기 (0) | 2016.11.07 |
---|---|
[오라클]시퀀스(SEQUENCE) 사용하기 (0) | 2016.11.06 |
[오라클]컬럼 순서 변경하기 (0) | 2016.11.05 |
[오라클]컬럼명으로 테이블 찾기 (0) | 2016.11.04 |
댓글
TAG
- 19대 선거
- 한글패치
- 테일즈 오브 베르세리아
- 라이젠
- 단면폭
- 투표소
- 다렉
- JSON PASER
- 블로그 개설
- 한글 패치
- 림의 외경
- unbound prefix
- Looper.prepare()
- 1800X
- 예약메일 전송
- 포아너
- 7700K
- 민주당 대선 후보
- 1800TI
- 사제 쿨러
- GPU 출시가격
- 초대장
- ONLINE JSON
- 오픈베타
- 국기 다는 시간
- 하이엔드 그래픽카드
- 티스토리 초대장
- GPU 출시
- 래디어 구조
- 배달 지연
최근에 올라온 글
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
공지사항
반응형