ใช้ DELETE WHERE กับ Escape Sequence สำหรับ Backslash
Backslash (\) เป็นอักขระ Escape ใน String Literal ต้องเขียน \\\\ (4 backslashes) ใน SQL เพื่อแทนค่า \\ (2 backslashes) ในข้อมูลจริง
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (FolderName VARCHAR(100));
INSERT INTO DemoTable VALUES ('????'), ('\\\\');
ข้อมูลในตาราง (แสดงเป็น \\ 2 ตัว)
+------------+ | FolderName | +------------+ | ???? | | \\ | +------------+
คำสั่งลบแถวที่ FolderName = '\\'
DELETE FROM DemoTable WHERE FolderName = '\\\\';
ข้อมูลหลังลบ (เหลือ ????)
+------------+ | FolderName | +------------+ | ???? | +------------+
คำอธิบาย Escape Sequence:
| ใน SQL String | ค่าใน Database | คำอธิบาย |
|---|---|---|
'\\\\' | \\ | แต่ละคู่ \\\\ → \ เดียวใน DB |
'\\' | \ | Escape ตัวเดียว (อาจ Warning) |
'\\\\\\\\' | \\\\ | 4 backslashes ใน DB |
กฎทั่วไป: ใน SQL String Literal (Single-quoted) \\ = Backslash 1 ตัว ดังนั้นเพื่อจับคู่ Backslash 2 ตัวใน DB ต้องเขียน 4 ตัวใน Query
ทางเลือก: ใช้ Prepared Statement / Parameterized Query ส่งค่าเป็น Parameter แยกจาก SQL ไม่ต้อง Escape เอง (ปลอดภัยกว่า ป้องกัน SQL Injection)