MySQL에서 You've처럼 작은따옴표(어포스트로피)가 포함된 텍스트를 데이터베이스에 삽입하려면 문자열을 큰따옴표로 감싸거나, 작은따옴표를 두 번 연속으로 입력하여 이스케이프 처리해야 합니다. 이번 글에서는 실제 예제를 통해 작은따옴표가 포함된 텍스트를 올바르게 저장하고 조회하는 방법을 알아보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Note text
);
Query OK, 0 rows affected (0.57 sec)Note라는 TEXT 타입의 열 하나를 가진 DemoTable 테이블이 생성되었습니다.
2. 작은따옴표가 포함된 데이터 삽입하기
INSERT 문으로 레코드를 추가할 때, 작은따옴표를 두 번('') 연속으로 입력하면 MySQL이 이를 하나의 작은따옴표 문자로 해석합니다.
mysql> insert into DemoTable values('You''ve seen the Taj? When?');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('You''ve visited the US?');
Query OK, 1 row affected (0.16 sec)위 예제에서 You''ve는 실제로는 You've로 저장됩니다.
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다. 작은따옴표가 정상적으로 표시되는 것을 확인할 수 있습니다.
+---------------------------------+ | Note | +---------------------------------+ | You've seen the Taj? When? | | You've visited the US? | +---------------------------------+ 2 rows in set (0.00 sec)
참고: 작은따옴표 처리의 다른 방법들
작은따옴표를 이스케이프하는 방법은 위 방법 외에도 여러 가지가 있습니다.
- 백슬래시 사용: 'You\'ve seen the Taj?'처럼 작은따옴표 앞에 백슬래시(\)를 붙여 이스케이프할 수 있습니다.
- 큰따옴표로 문자열 감싸기: "You've seen the Taj?"처럼 전체 문자열을 큰따옴표로 묶으면 내부의 작은따옴표를 그대로 사용할 수 있습니다.
- 프리페어드 스테이트먼트(Prepared Statement) 활용: 애플리케이션에서 쿼리를 실행할 때는 매개변수 바인딩을 사용하면 이스케이프를 자동으로 처리할 수 있으며, SQL 인젝션 공격도 예방할 수 있어 가장 안전한 방법입니다.
이처럼 MySQL에서는 작은따옴표를 적절히 이스케이프 처리하기만 하면, 어포스트로피가 포함된 텍스트도 아무 문제 없이 저장하고 조회할 수 있습니다.