이 블로그 검색

2011년 1월 27일 목요일

임의 정렬

8i(or higher) 이후에 참 편리한 기능이 많이 추가되었는데

그 가운데 하나가 ORDER BY 절에서 함수를 사용할 수 있다는 것입니다.

SELECT *
FROM tab
ORDER BY DECODE(book,'Y','1','B','2','U','3','A','4')

이렇게 적어주시면 book 컬럼의 Y 값이 정렬될 때는 1 로 치환되어 가장 앞에 오게 됩니다.

DECODE 함수로 적어주기에 복잡한 규칙이라면,
CASE 구문을 사용하셔도 됩니다.

여러 SQL에서 공통으로 사용한다면 사용자정의 함수를 생성하여 활용할 것을 추천해 드립니다.

정렬하는 규칙이 변경되거나 그 양이 매우 많다면
정렬 기준만을 담은 테이블을 만들고 조인하여 사용하는 것이 
인덱스 활용면에서 더 좋을 것입니다.

댓글 없음:

댓글 쓰기