เมื่อต้องการเก็บข้อความที่มีเครื่องหมายอ่อน (') เช่น "Carol's" ใน MySQL ต้องทำการ Escape เพื่อไม่ให้ SQL เข้าใจผิด
วิธีที่ 1: ใช้ Backslash (\)
SELECT 'Carol\'s Taylor';
ผลลัพธ์: Carol's Taylor
วิธีที่ 2: ใช้ Single Quote คู่ (Double Single Quote)
SELECT 'Carol''s Taylor';
ผลลัพธ์: Carol's Taylor
ตัวอย่างการ Insert ลงตาราง
CREATE TABLE SingleQuotesDemo (
id INT,
name VARCHAR(100)
);
-- วิธี Backslash
INSERT INTO SingleQuotesDemo VALUES (1, 'John\'s');
-- วิธี Double Quote
INSERT INTO SingleQuotesDemo VALUES (2, 'John''s');
แนวทางปฏิบัติที่ดีที่สุด (Best Practice)
- ใช้ Prepared Statements / Parameterized Queries แทนการ Escape เอง (ปลอดภัยจาก SQL Injection)
- ในภาษาโปรแกรม ให้ใช้ Driver/Library ที่รองรับ Parameter Binding
- หลีกเลี่ยงการต่อสตริง SQL โดยตรง (String Concatenation)
สรุป
ทั้งสองวิธีให้ผลลัพธ์เหมือนกัน แต่ในยุคปัจจุบันควรใช้ Prepared Statements เพื่อความปลอดภัยและสะดวกในการบำรุงรักษาโค้ด