빈 값 정렬
최소 지원 버전은 약간의 차이가 있을 수 있습니다.
MySQL/MariaDB
SELECT * FROM {테이블} ORDER BY {컬럼} ASC; -- NULL 처음, (NULL 제외 시) 빈 문자열 처음
SELECT * FROM {테이블} ORDER BY {컬럼} DESC; -- NULL 마지막, (NULL 제외 시) 빈 문자열 마지막
/*
MySQL 3.23 이상/MariaDB 5.1 이상
*/
-- NULLS FIRST
SELECT * FROM {테이블} ORDER BY {컬럼} IS NOT NULL, {컬럼} ASC; -- NULL 처음
SELECT * FROM {테이블} ORDER BY {컬럼} IS NOT NULL, {컬럼} DESC; -- NULL 처음
-- NULLS LAST
SELECT * FROM {테이블} ORDER BY {컬럼} IS NULL, {컬럼} ASC; -- NULL 마지막
SELECT * FROM {테이블} ORDER BY {컬럼} IS NULL, {컬럼} DESC; -- NULL 마지막
MSSQL
SELECT * FROM {테이블} ORDER BY {컬럼} ASC; -- NULL 처음, (NULL 제외 시) 빈 문자열 처음
SELECT * FROM {테이블} ORDER BY {컬럼} DESC; -- NULL 마지막, (NULL 제외 시) 빈 문자열 마지막
/*
MSSQL 6.5 이상
*/
-- NULLS FIRST
SELECT * FROM {테이블} ORDER BY CASE WHEN {컬럼} IS NULL THEN 0 ELSE 1 END, {컬럼} ASC; -- NULL 처음
SELECT * FROM {테이블} ORDER BY CASE WHEN {컬럼} IS NULL THEN 0 ELSE 1 END, {컬럼} DESC; -- NULL 처음
-- NULLS LAST
SELECT * FROM {테이블} ORDER BY CASE WHEN {컬럼} IS NULL THEN 1 ELSE 0 END, {컬럼} ASC; -- NULL 마지막
SELECT * FROM {테이블} ORDER BY CASE WHEN {컬럼} IS NULL THEN 1 ELSE 0 END, {컬럼} DESC; -- NULL 마지막
Oracle/Tibero
SELECT * FROM {테이블} ORDER BY {컬럼} ASC; -- NULL 마지막
SELECT * FROM {테이블} ORDER BY {컬럼} DESC; -- NULL 처음
/*
Oracle 8i 이상/Tibero 3 이상
*/
-- NULLS FIRST
SELECT * FROM {테이블} ORDER BY {컬럼} ASC NULLS FIRST; -- NULL 처음
SELECT * FROM {테이블} ORDER BY {컬럼} DESC NULLS FIRST; -- NULL 처음
-- NULLS LAST
SELECT * FROM {테이블} ORDER BY {컬럼} ASC NULLS LAST; -- NULL 마지막
SELECT * FROM {테이블} ORDER BY {컬럼} DESC NULLS LAST; -- NULL 마지막
PostgreSQL
SELECT * FROM {테이블} ORDER BY {컬럼} ASC; -- NULL 마지막, 빈 문자열 처음
SELECT * FROM {테이블} ORDER BY {컬럼} DESC; -- NULL 처음, 빈 문자열 마지막
/*
PostgreSQL 8.3 이상
*/
-- NULLS FIRST
SELECT * FROM {테이블} ORDER BY {컬럼} ASC NULLS FIRST; -- NULL 처음
SELECT * FROM {테이블} ORDER BY {컬럼} DESC NULLS FIRST; -- NULL 처음
-- NULLS LAST
SELECT * FROM {테이블} ORDER BY {컬럼} ASC NULLS LAST; -- NULL 마지막
SELECT * FROM {테이블} ORDER BY {컬럼} DESC NULLS LAST; -- NULL 마지막