프로젝트를 수행하며 NULL을 포함한 데이터값을 조회한 서비스가 있는데
화면에 조회시 NULL 데이터가 먼저 나와 깔끔해 보이지 않았다.
ORDER BY 적용 시, DBMS 마다 NULL의 정렬 순서가 다른데
ORACLE의 경우 NULL을 마지막으로 정렬한다.
->
오름차순(ASC)의 경우 NULL을 마지막으로
내림차순(DESC)의 경우 NULL을 처음으로 정렬
내가 조회한 컬럼은 DESC가 적용되어 있었기 때문에 NULL값이여도 먼저 조회가 되었다.
그렇다면 NULL의 위치를 조절하는 방법은?
-> NULLS FIRST와 NULLS LAST를 활용
적용전
-- 예시 SELECT substr(S.sno,1,1)sno1, substr(S.sno,2,2)sno2, substr(S.sno,4,2)sno3, S.sname, E.ekor, E.emath, E.eeng, E.ehist , (E.ekor+E.emath+E.eeng+E.ehist) total FROM student_tbl_03 S LEFT JOIN exam_tbl_03 E ON S.sno = E.sno ORDER BY total DESC;
/*
출력화면
SNO1 SNO2 SNO3 SNAME EKOR EMATH EENG EHIST TOTAL
1 01 03 장믿음
1 01 05 진평화
1 01 06 차공단
1 01 04 최사랑
1 01 01 김행복 98 91 95 90 374
1 01 02 이축복 87 89
> 적용 후
-- 예시
SELECT
substr(S.sno,1,1)sno1,
substr(S.sno,2,2)sno2,
substr(S.sno,4,2)sno3,
S.sname, E.ekor, E.emath, E.eeng, E.ehist ,
(E.ekor+E.emath+E.eeng+E.ehist) total
FROM student_tbl_03 S
LEFT JOIN
exam_tbl_03 E
ON S.sno = E.sno
ORDER BY total DESC NULLS LAST;
/*
출력화면
SNO1 SNO2 SNO3 SNAME EKOR EMATH EENG EHIST TOTAL
1 01 01 김행복 98 91 95 90 374
1 01 02 이축복 87 89 92 82 350
1 01 05 진평화
1 01 04 최사랑
1 01 06 차공단
1 01 03 장믿음
참고참고
[링크텍스트](https://yunamom.tistory.com/210)