비즈니스 로직을 구현함에 있어 null 값의 조회되는 순서를 정하고 싶을때가 있다. 예를 들어 order by로 가져온 데이터에서 null 값이 아닌 데이터를 처리하고 null값을 최후의 선택지로 차선을 선택을 하는 경우이다. 이번 글에서는 각 DBMS에서 null값을 order by 구문으로 조회 시 삽입되는 위치에 대해 알아보자.
DBMS 별 기본 설정 값
DBMS 마다 Null에 대한 sorting하는 방식을 기본으로 정해진 룰대로 진행한다. 아래 각각에 대한 설명이다.
PostgreSQL, Oracle
여기서는 Null값을 모든 유효한 값뒤에 위치 하게 된다.
SQLite, MySQL,MSSQL
Null은 모든 값보다 작은 값으로 처리된다.
기본 Order과 다르게 처리
위에서 나열한 방식과 다르게 사용하려면 DBMS별로 처리하면 방법이 다르다.
PostgreSQL, Oracle, SQLite
Null에 대한 위치를 Query문으로 명시가 가능하다.
select * from product order by credate_date NULLS FIRST;
MySQL ,MSSQL
위의 방식처럼 Null에 대한 처리를 따로 제공하지 않는다. 작은 트릭으로 이 문제를 해결 할 수 있다. number로 된 필드는 앞에 -를 붙힌 후 역순으로 조회하면 Null 값들을 수자 뒤로 배치 시킬 수 있다.
select * from product order by -number desc;
다른 방식으로는 먼저 Null 필드를 가려낸 후 다시 order by 하는 방식이다. 이 방식은 모든 타입의 필드에 대하여 모두 적용이 가능 하다.
select * from procduct order by factory IS NULL, factory
'DataBase' 카테고리의 다른 글
Hibernate L2 Cache - Region 별 저장 및 통계 정보를 이용하기 (0) | 2022.01.25 |
---|---|
[DynamoDB] AWS Lambda을 이용하여 DynamoDB Table간 실시간 동기화하기 (0) | 2022.01.08 |
[Spring] DynamoDB Enhanced Client 사용 기 (feat. AWS SDK V2) (0) | 2021.12.23 |
[Python] DynamoDB 및 Mysql 접근법 (0) | 2021.12.21 |
[DynamoDB] Partition Key 설계 (0) | 2021.12.21 |
Comment