[PostgreSQL] Tab 들어가있는 데이터 확인 및 제거하는 방법
가끔 SQL을 조회하다 보면 varchar 데이터 뒤에 tab이 들어간 채로 저장이 된 경우가 보인다.
보이기에는 제대로 된 데이터 같지만 length나 특정 조건으로 조건을 걸면서 조회를 할 때 필터링 되어 조회되지 않을 가능성이 있고
나중에 Tab Separated 되어 csv 등으로 파일을 추출할 때도 문제가 될 수 있기 떄문에 오늘은 tab이 들어간 데이터들을 조회하고 이들 중 tab들을 제거하는 방법에 대해 알아보겠다.
1. TAB 이 들어간 데이터 조회하기
chr(39)라는 아스키코드는 작은따옴표를 나타낸다고 지난 포스팅에서 다룬 적이 있었다.
마찬가지로 TAB도 아스키코드를 사용하여 검출할 수 있다.
TAB은 chr(9) 와 매핑되며 따라서 chr(9)를 사용하여 데이터를 조회할 수 있다.
예를 들어 EMP_NM (사원명) 에 tab이 들어간 데이터를 확인하고 싶다고 해보자.
SELECT * FROM 테이블명 WHERE EMP_NM (칼럼명) like CONCAT('%', chr(9), '%');
이렇게 조회를 할 수 있다.
chr(9)가 들어간 데이터들을 조회하기 위하여 CONCAT을 사용해서 like 조건으로 조회를 한 것이다.
2. TAB 이 들어간 데이터 제거하기
그러면 이렇게 TAB이 들어간 데이터에서 TAB을 제거하려면 어떻게 해야할까?
그럴 때는 REPLACE 함수를 써서 TAB을 empty string으로 교체해주면 된다.
UPDATE
테이블명
SET EMP_NM(사원명) = REPLACE(EMP_NM, chr(9), '')
WHERE EMP_NM (칼럼명) like CONCAT('%', chr(9), '%');
이런식으로 Replace 함수와 아스키문자를 활용하면 TAB 뿐 아니라 다른 특수문자가 들어간 데이터도 원하는 데이터로 쉽게 변경할 수 있다.