Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ค้นหาค่าที่มีตัวอักษร % ใน MySQL LIKE Query (Escape Character)

ค้นหาตัวอักษร % ตรงตัวใน LIKE Pattern

ตัวอักษร % ใน LIKE เป็น Wildcard (Match อะไรก็ได้) หากต้องการค้นหา % ตรงตัว ต้อง Escape ด้วย Backslash \\%

ไวยากรณ์

SELECT * FROM your_table WHERE your_column LIKE '\\%';

สร้างตารางและข้อมูล (มี % อยู่ในข้อมูล)

mysql> CREATE TABLE DemoTable1497 (Name VARCHAR(20));
Query OK, 0 rows affected (0.55 sec)

mysql> INSERT INTO DemoTable1497 VALUES
    -> ('%JohnSmith'), ('DavidMiller'), ('CarolTaylor%'), ('%DavidMiller');
Query OK, 4 rows affected

ข้อมูลทั้งหมด

+--------------+
| Name         |
+--------------+
| %JohnSmith   |
| DavidMiller  |
| CarolTaylor% |
| %DavidMiller |
+--------------+

คำสั่ง: ค้นหา Name ที่ขึ้นต้นด้วย % (Escape ด้วย \\)

mysql> SELECT * FROM DemoTable1497 WHERE Name LIKE '\\%';

ผลลัพธ์

+--------------+
| Name         |
+--------------+
| %JohnSmith   |
| %DavidMiller |
+--------------+

กรณีอื่นๆ ของ Escape ใน LIKE

ใช้ ESCAPE Clause กำหนด Escape Character เอง

-- ใช้ ! เป็น Escape Character แทน \\
SELECT * FROM DemoTable1497 WHERE Name LIKE '!%' ESCAPE '!';

-- ค้นหาที่มี ! อยู่ในข้อมูล
SELECT * FROM DemoTable1497 WHERE Name LIKE '%!%%' ESCAPE '!';

⚠️ หมายเหตุเรื่อง Backslash ใน String Literal

  • ใน SQL String Literal '\\%' จะถูกตีความเป็น \% (Backslash + Percent)
  • หาก NO_BACKSLASH_ESCAPES SQL Mode เปิดอยู่ ต้อง Double Escape: '\\\\%'
  • แนะนำใช้ ESCAPE Clause เพื่อความชัดเจนและ Portable
ต้องการค้นหาPatternคำอธิบาย
ขึ้นต้น %LIKE '\\%'Escape % ตัวแรก
ลงท้าย %LIKE '%\\%'Escape % ตัวท้าย
มี % อยู่ตรงไหนก็ได้LIKE '%\\%%'Escape % กลาง
ตัวอักษร _ (Underscore)LIKE '\\_'_ คือ Wildcard หนึ่งตัว ต้อง Escape
Backslash ตรงตัวLIKE '\\\\'Escape Backslash เอง