MySQL에서 특수 문자를 제거하는 방법
MySQL의 REPLACE() 함수를 사용하면 데이터베이스 필드에 포함된 특수 문자를 손쉽게 제거할 수 있습니다. 큰따옴표(" "), 샵 기호(#), 달러 기호($), 퍼센트(%) 같은 특수 문자들이 대표적인 예입니다.
기본 문법
데이터베이스 필드에서 특수 문자를 제거하는 기본 문법은 다음과 같습니다.
UPDATE yourTableName
SET yourColumnName = REPLACE(yourColumnName, 'yourSpecialCharacters', '');
이 문법은 지정한 열의 값에서 특정 특수 문자를 찾아 빈 문자열('')로 치환함으로써 해당 문자를 삭제합니다.
예제 테이블 생성
실제 동작을 확인하기 위해 예제 테이블을 먼저 만들어 보겠습니다.
mysql> CREATE TABLE RemoveSpecialCharacterDemo
-> (
-> Id int NOT NULL AUTO_INCREMENT,
-> Name varchar(20),
-> PRIMARY KEY(Id)
-> );
Query OK, 0 rows affected (0.59 sec)
샘플 데이터 삽입
INSERT 명령으로 이름 앞뒤에 달러 기호($)가 포함된 레코드들을 추가합니다.
mysql> INSERT INTO RemoveSpecialCharacterDemo(Name) VALUES('$John');
Query OK, 1 row affected (0.29 sec)
mysql> INSERT INTO RemoveSpecialCharacterDemo(Name) VALUES('$Carol');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO RemoveSpecialCharacterDemo(Name) VALUES('$Mike');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO RemoveSpecialCharacterDemo(Name) VALUES('$Sam');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO RemoveSpecialCharacterDemo(Name) VALUES('$Dav$id$');
Query OK, 1 row affected (0.17 sec)
mysql> INSERT INTO RemoveSpecialCharacterDemo(Name) VALUES('Robert$');
Query OK, 1 row affected (0.30 sec)
mysql> INSERT INTO RemoveSpecialCharacterDemo(Name) VALUES('J$ames$');
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO RemoveSpecialCharacterDemo(Name) VALUES('Max$well$');
Query OK, 1 row affected (0.27 sec)현재 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> SELECT * FROM RemoveSpecialCharacterDemo;
실행 결과는 다음과 같습니다.
+----+-----------+
| Id | Name |
+----+-----------+
| 1 | $John |
| 2 | $Carol |
| 3 | $Mike |
| 4 | $Sam |
| 5 | $Dav$id$ |
| 6 | Robert$ |
| 7 | J$ames$ |
| 8 | Max$well$ |
+----+-----------+
8 rows in set (0.00 sec)
REPLACE()로 특수 문자 제거
이제 REPLACE() 함수를 사용해 Name 열에서 달러 기호($)를 모두 제거하는 UPDATE 쿼리를 실행합니다.
mysql> UPDATE RemoveSpecialCharacterDemo
-> SET Name = REPLACE(Name, '$', '');
Query OK, 8 rows affected (0.22 sec)
Rows matched: 8 Changed: 8 Warnings: 0
결과 확인
변경된 결과를 다시 한번 조회해 보겠습니다.
mysql> SELECT * FROM RemoveSpecialCharacterDemo;
실행 결과는 다음과 같습니다.
+----+---------+
| Id | Name |
+----+---------+
| 1 | John |
| 2 | Carol |
| 3 | Mike |
| 4 | Sam |
| 5 | David |
| 6 | Robert |
| 7 | James |
| 8 | Maxwell |
+----+---------+
8 rows in set (0.00 sec)
출력 결과를 보면 모든 레코드에서 특수 문자 $가 완전히 제거되어 깨끗한 이름만 남은 것을 확인할 수 있습니다. 이처럼 REPLACE() 함수 하나만으로도 여러 위치에 흩어져 있는 특수 문자를 한 번에 정리할 수 있습니다.