DB

[Mysql] 공백을 null로 치환하기

꼬몽울 2021. 7. 21. 10:31

어제 협력사분에게 흥미로운 질문이 날아왔다.

공백(' ')을 Trim을 해서 출력을 하면 왜 null이 안되냐는 질문이었다.

공백을 trim하면 null이라구?????

처음에는 응? 뭐지하는 생각에 이것저것 찾아보았다.

찾아보니 oracle에서는 공백을 Trim하면 null이 된다고 한다.

현재 oracleDB가 없어 직접 해볼수는 없지만 그렇다고들 하니...

일단 우리가 쓰는 db는 postgresql과 mysql이다

실험을 해보자

 

with temp as (
select "hello " as a union all
select "      " as a union all
select null as a 
)
select a, trim(a)
from temp

먼저 대충 temp 데이터를 만들어서 실험을 해보려고한다.

 

결과.

역시나 공백은 trim하면 공백이지

 

그러면 이 공백을 어떻게하면 null로 만들까?

 

고민을하다가 길이는 어떤지 궁금했다.

오호라 길이가 0인 공백이 되어버리는구나!

이걸 이용하면 아래와 같이 Null을 만들어 볼 수 있다.

 

if문을 사용해서 길이가 0이면 null을 반환하게 만들면 끝.