데이터베이스 종류에 따라 ' '(empty string) 과 null 처리 방법이 다르다.
아래와 데이터를 입력했다고 가정해보고 결과 차이를 확인해보자.
insert into tmp_table (id, name) values (1, 'cho');
insert into tmp_table (id, name) values (2, '');
insert into tmp_table (id, name) values (3, null);
1. Oracle
Oracle 에서는 ' ' 과 null 을 동일하게 본다. 정확하게는 ' ' 이 null 로 처리된다.
-- '' 과 null 처리
select id from tmp_table where name is null; --2, 3
select id from tmp_table where name is not null; --1
select id from tmp_table where name = ''; --2,3
2. MySQL, PostgreSQL 등
MySQL, PostgreSQL 에서는 '' 과 null을 다르게 본다.
따라서 쿼리 조건문에 AA = ' ' or AA is null 로 각각 작성해주어야 한다. (full scan 위험도 증가)
-- '' 과 null 처리
select id from tmp_table where name is null; --3
select id from tmp_table where name is not null; --1, 2
select id from tmp_table where name = ''; --2
3. '' 과 null의 길이(length) 계산
null은 연산 자체가 불가능하다. 길이 계산도 연산이기 때문에 결과가 null이니 쿼리 작성시 주의해야 한다.
--길이
select length(name) from tmp_table where name is null; --null
select length(name) from tmp_table where name = ''; --0
'Database' 카테고리의 다른 글
[DB] Index (0) | 2024.07.09 |
---|---|
[DB] char vs. varchar (수정 보완 필요) (0) | 2024.06.12 |
H2 데이터베이스 설치 (교육용 무료 DB 추천) (0) | 2024.02.17 |