데이터베이스를 운영하다 보면 이스케이프 처리된 백슬래시(\")가 문자열에 포함되어 있어 이를 일반 따옴표(")로 정리해야 하는 경우가 자주 발생합니다. 이번 글에서는 MySQL의 REPLACE() 함수를 활용해 varchar 열에 저장된 백슬래시가 앞에 붙은 문자열 값을 손쉽게 치환하는 방법을 단계별로 알아보겠습니다.
1. 테스트용 테이블 생성
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Title varchar(100)
);
Query OK, 0 rows affected (0.57 sec)varchar 타입의 Title 컬럼 하나를 가진 간단한 테이블입니다.
2. 샘플 데이터 삽입
INSERT 문을 사용해 백슬래시가 포함된 레코드를 여러 개 입력합니다.
mysql> insert into DemoTable values('\"MySQL');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('MongoDB\"');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('\"Java\"');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('\"C\"');
Query OK, 1 row affected (0.14 sec)SELECT 문으로 전체 레코드를 조회해 현재 저장된 상태를 확인해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-----------+ | Title | +-----------+ | \"MySQL | | MongoDB\" | | \"Java\" | | \"C\" | +-----------+ 4 rows in set (0.00 sec)
모든 문자열 값 앞뒤에 백슬래시와 따옴표가 함께 저장되어 있는 것을 확인할 수 있습니다.
3. REPLACE() 함수로 백슬래시 치환하기
백슬래시가 선행하는 문자열 값을 일반 따옴표로 바꾸려면 아래와 같이 UPDATE 문과 REPLACE() 함수를 함께 사용하면 됩니다.
mysql> update DemoTable set Title=replace(Title,'\"','"'); Query OK, 4 rows affected (0.14 sec) Rows matched: 4 Changed: 4 Warnings: 0
여기서 REPLACE 함수의 첫 번째 인자는 대상 컬럼, 두 번째 인자는 찾을 문자열(\"), 세 번째 인자는 교체할 문자열(")입니다. 즉, 백슬래시+따옴표 조합을 따옴표 하나로 변환하는 동작을 수행합니다.
4. 변경 결과 확인
업데이트 후 테이블을 다시 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----------+ | Title | +----------+ | "MySQL | | MongoDB" | | "Java" | | "C" | +----------+ 4 rows in set (0.00 sec)
모든 레코드에서 불필요한 백슬래시가 제거되고 깔끔한 따옴표 형태로 데이터가 정리된 것을 확인할 수 있습니다.
정리
MySQL에서 이스케이프된 백슬래시 문자를 제거하거나 다른 값으로 바꿀 때는 UPDATE + REPLACE() 조합이 가장 간단하고 효율적인 방법입니다. 단, 대량의 데이터를 처리하기 전에는 반드시 백업을 수행하고, WHERE 절을 추가해 변경 범위를 제한하는 것이 안전합니다.