데이터를 정렬하기 위해 ORDER BY를 사용합니다.
정렬하려는 컬럼에 공백 또는 NULL 값이 있는 경우에는 ASC 또는 DESC로 정렬 방식을 지정해도 원하는 형태로 정렬이 안 되는 경우가 있습니다.
컬럼에 공백 또는 NULL이 포함된 컬럼을 정렬하는 방법을 알아보겠습니다.
공백 또는 NULL 정렬
아래와 같은 데이터가 있다고 가정하겠습니다.
id name age type
1 홍길동 21 A
2 김철수 27
3 이영희 22 A
4 정대한 26 (NULL)
5 안민국 23 F
6 지서울 25 E
7 조경긱 24 R
컬럼 type에는 공백과 NULL 그리고 값들이 들어있습니다.
type 컬럼을 정렬 항목으로 지정해서 검색해보겠습니다.
SELECT
*
FROM test_table
ORDER BY type ASC;
결과
id name age type
4 정대한 26 (NULL)
2 김철수 27
1 홍길동 21 A
3 이영희 22 A
6 지서울 25 E
5 안민국 23 F
7 조경긱 24 R
데이터가 들어있지 않는 공백과 NULL 레코드가 먼저 표시되었습니다.
값이 들어있는 레코드가 우선적으로 되게 하기 위해서는 다음과 같이 ORDER BY에 지정을 하면 됩니다.
SELECT
*
FROM test_table
ORDER BY
CASE
WHEN type is NULL THEN '2'
WHEN type = '' THEN '1'
ELSE '0'
END, type ASC;
결과
id name age type
1 홍길동 21 A
3 이영희 22 A
6 지서울 25 E
5 안민국 23 F
7 조경긱 24 R
2 김철수 27
4 정대한 26 (NULL)
출력된 결과를 확인해보면 값이 들어있는 레코드부터 정렬이 되었습니다.
그리고 공백이 출력되고 마지막으로 출력되었습니다.
댓글