실수 포인트

같은 ORDER BY salary ASC라도
NULL의 기본 위치는 DBMS마다 다릅니다.

값이 없는 행을 앞에 둘지 뒤에 둘지가 엔진 기본값에 따라 갈리므로, 정렬 결과를 그대로 믿으면 리포트 순서나 윈도우 함수 결과 해석이 달라질 수 있습니다.

모든 DBMS가 같은 출발점으로 실행
SELECT name, salary
FROM employees
ORDER BY salary ASC;
예시 데이터
Kim 1000
Lee 2000
Park NULL

차이는 데이터가 아니라, NULL을 어디에 놓는지에 대한 기본 정렬 규칙에서 생깁니다.

기본적으로 NULL이 뒤로 감

값 있는 행이 먼저, NULL은 마지막

PostgreSQL Oracle

ASC 결과 끝부분에 NULL 행이 붙습니다.

1 Kim 1000
2 Lee 2000
3 Park NULL
기본적으로 NULL이 앞으로 옴

NULL 행이 먼저, 값 있는 행은 뒤로 밀림

MySQL SQL Server

같은 ASC라도 결과 첫 줄이 NULL 행으로 바뀝니다.

1 Park NULL
2 Kim 1000
3 Lee 2000