Để lưu chuỗi chứa dấu ngoặc kép " trong MySQL, cần **escape** nó bằng dấu gạch chéo ngược \ bên trong chuỗi literal được bao bởi dấu nháy đơn '...'.
Cú pháp
INSERT INTO ten_bang VALUES ('\"Gia_tri_co_dau_ngoac_kep\"');
Trong chuỗi '...', chuỗi \" diễn giải thành ký tự " thực tế.
Ví dụ minh họa
mysql> CREATE TABLE DemoTable (Name VARCHAR(20));
mysql> INSERT INTO DemoTable VALUES ('"John"'), ('"Chris"'), ('"Adam Smith"'), ('"Carol"');
mysql> SELECT * FROM DemoTable;
Kết quả – dấu ngoặc kép được lưu và hiển thị:
+--------------+ | Name | +--------------+ | "John" | | "Chris" | | "Adam Smith" | | "Carol" | +--------------+
Các cách escape khác
| Cách viết | Kết quả lưu | Ghi chú |
|---|---|---|
'"John"' | "John" | Dấu nháy đơn bao ngoài, không escape (OK vì không xung đột) |
'\"John\"' | "John" | Escape rõ ràng – an toàn, khuyến nghị |
"'John'" | 'John' | Dấu nháy kép bao ngoài, lưu dấu nháy đơn |
"\"John\"" | "John" | Escape trong chuỗi nháy kép |
Best practice
- Luôn dùng **dấu nháy đơn
'...'** cho chuỗi literal SQL (chuẩn ANSI, tránh lỗi khi ANSI_QUOTES mode bật). - Escape dấu nháy đơn bên trong:
'It\'s OK'. - Escape dấu nháy kép bên trong:
'He said \"Hi\"'. - Ứng dụng: dùng **prepared statement / parameterized query** – driver tự xử lý escape, an toàn chống SQL Injection.