개요
MySQL에서 데이터를 삽입할 때 값에 큰따옴표(")를 포함하려면, 해당 문자가 SQL 구문 오류로 잘못 해석되지 않도록 백슬래시(\)로 이스케이프 처리해야 합니다. 아래 구문을 참고하세요.
구문
insert into yourTableName values('\"yourValue\"');이제 실제 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 데모용 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.63 sec)
2단계: 큰따옴표가 포함된 레코드 삽입
insert 명령어를 사용하고, 값의 앞뒤 큰따옴표 앞에 백슬래시(\)를 붙여 이스케이프 처리합니다.
mysql> insert into DemoTable values('\"John\"');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('\"Chris\"');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('\"Adam Smith\"');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('\"Carol\"');
Query OK, 1 row affected (0.20 sec)3단계: 결과 확인
select 문을 사용하여 테이블의 전체 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다. 각 값 앞뒤에 붙은 큰따옴표가 정상적으로 저장된 것을 쉽게 확인할 수 있습니다.
+--------------+
| Name |
+--------------+
| "John" |
| "Chris" |
| "Adam Smith" |
| "Carol" |
+--------------+
4 rows in set (0.00 sec)
참고: 다른 이스케이프 방법들
- 작은따옴표 구분자 활용: 문자열을 작은따옴표로 감싸면 내부의 큰따옴표는 충돌하지 않으므로, 환경에 따라 이스케이프 없이도 저장할 수 있습니다. 다만 SQL 모드(예: ANSI_QUOTES)에 따라 동작이 달라질 수 있습니다.
- NO_BACKSLASH_ESCAPES 모드: 서버 설정에서 이 모드를 활성화하면 백슬래시가 일반 문자로 취급되어, 이스케이프 처리 방식 자체가 변경됩니다. 운영 환경의 sql_mode 설정을 항상 확인하는 것이 좋습니다.
결론적으로, 큰따옴표가 포함된 값을 안전하게 삽입하는 가장 확실한 방법은 백슬래시(\)로 이스케이프 처리하는 것입니다. 이를 통해 SQL 구문 오류 없이 원본 형태 그대로 데이터를 저장할 수 있습니다.