MySQL에서 SELECT 문으로 ASCII 변환이 불가능한 문자 제거하기
데이터베이스 작업 중 유로 기호(€)나 섹션 기호(§) 같은 특수문자가 포함된 데이터를 다룰 때, ASCII로 변환할 수 없는 문자를 제거해야 하는 경우가 있습니다. MySQL에서는 CONVERT() 함수와 REPLACE() 함수를 조합하면 이 문제를 간단하게 해결할 수 있습니다.
1. 테이블 생성
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Value varchar(100)
);
Query OK, 0 rows affected (0.57 sec)2. 데이터 삽입
insert 명령을 사용하여 특수문자가 포함된 레코드를 삽입합니다.
mysql> insert into DemoTable values('€986');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('§97');
Query OK, 1 row affected (0.15 sec)3. 저장된 데이터 확인
select 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+--------+ | Value | +--------+ | €986 | | §97 | +--------+ 2 rows in set (0.00 sec)
4. ASCII로 변환할 수 없는 문자 제거 쿼리
CONVERT(Value USING ascii)는 ASCII로 변환할 수 없는 문자를 물음표(?)로 대체합니다. 여기에 REPLACE() 함수를 적용해 물음표를 빈 문자열로 치환하면, 특수문자가 완전히 제거된 깨끗한 결과를 얻을 수 있습니다.
mysql> select replace(convert(Value using ascii),'?','') from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+--------------------------------------------+ | replace(convert(Value using ascii),'?','') | +--------------------------------------------+ | 986 | | 97 | +--------------------------------------------+ 2 rows in set (0.00 sec)
결과를 보면 '€986'은 '986'으로, '§97'은 '97'로 변환되어 ASCII로 변환할 수 없는 특수문자가 성공적으로 제거된 것을 확인할 수 있습니다. 이 방법은 숫자와 알파벳만 남기고 불필요한 기호를 정리해야 할 때 매우 유용합니다.