* 일반적으로 오라클에서 공백제거시에 trim이나 replace를 사용하곤 하는데 이러한 함수들을 이용해도
공백이 제거 되지 않는 경우가 있다. 물론 육안상으로는 구분이 불가능하다.
아래와 같은 테이블과 데이터가 있다.
select *
from test1;
-- 결과
ID NAME
test1 candy
test2 candy
분명 육안상으로는 test1 과 test2가 동일한 NAME인 "candy"를 가지고 있는데,
아래와 같은 결과가 나온다.
1. select *
from test1
where name = 'candy';
-- 결과
ID NAME
test1 candy
==> test2는 조회되지 않는다.
2. select id, name, length(name)
from test1;
-- 결과
ID NAME LENGTH(NAME)
test1 candy 5
test2 candy 6
==> 육안상으로는 분명이 동일하게 보이지만 length가 다르게 나온다.
왜 1번 , 2번 과 같은 결과가 나오는 것일까.
결론적으로는 확인해보니 육안상으로는 확인이 불가능한 공백문자가 들어가 있었다.
chr(0) <--- 이놈이 포함되어 문제가 발생했던 것이다.
따라서 이놈을 replace 해주면 문제가 간단히 해결된다.
* 처리 후 select
1. select *
from test1
where replace(name, chr(0), '') = 'candy';
-- 결과
ID NAME
test1 candy
test2 candy
2. select id, name, length(replace(name, chr(0), ''))
from test1;
-- 결과
ID NAME LENGTH(NAME)
test1 candy 5
test2 candy 5
trim으로 제거 되지 않는 공백이 분명있음에도 구글 혹은 네이버에서 검색되는 자료가 없어서 올린다~
참고들 하세요~