더북(TheBook)

결과 집합 정렬

SQL 표준에서는 다음 내용을 제외하고 널과 널이 아닌 값의 정렬 방법은 명시하지 않는다.

임의의 널 값 두 개는 정렬 순서가 같다.

널은 널이 아닌 값의 상위나 하위로 정렬해야 한다.

크게 놀랄 만한 내용은 없다. DBMS별 차이점을 알아보자.

DB2 : 널은 널이 아닌 값보다 정렬 순서가 높다.

액세스 : 널은 널이 아닌 값보다 정렬 순서가 낮다.

SQL Server : 널은 널이 아닌 값보다 정렬 순서가 낮다.

MySQL : 널은 널이 아닌 값보다 정렬 순서가 낮다. 트롤 아빈의 말에 따르면 MySQL 관련 문서에 나온 내용은 아니지만, 컬럼 이름 앞에 -(마이너스) 문자를 추가하면 ASCDESC로 바뀌고 DESCASC로 바뀐다고 한다.

오라클 : 기본적으로 널은 널이 아닌 값보다 정렬 순서가 높지만, ORDER BY 절에서 NULLS FIRSTNULLS LAST를 추가하면 정렬 동작이 달라진다.

PostgreSQL : 기본적으로 널은 널이 아닌 값보다 정렬 순서가 높지만, 8.3 버전부터는 ORDER BY 절에서 NULLS FIRST나 NULLS LAST를 추가하면 정렬 동작이 달라진다.