การค้นหาเครื่องหมายเปอร์เซ็นต์ในคอลัมน์ VARCHAR ด้วย MySQL
ใน MySQL คุณสามารถใช้ตัวดำเนินการ LIKE ร่วมกับ ESCAPE เพื่อค้นหาเครื่องหมายเปอร์เซ็นต์ (%) ที่แท้จริงในคอลัมน์ VARCHAR ได้ เนื่องจากเครื่องหมาย % เป็นอักขระพิเศษ (wildcard) ใน LIKE จึงต้องใช้ escape character เพื่อให้ MySQL รู้ว่าต้องการค้นหาตัวอักษร % จริงๆ
ไวยากรณ์
SELECT * FROM yourTableName WHERE yourColumnName LIKE '%|%%' ESCAPE '|';
ตัวอย่างการใช้งาน
สร้างตารางทดสอบ:
CREATE TABLE FindPercentInVarcharDemo (
Id INT NOT NULL AUTO_INCREMENT,
Words VARCHAR(30),
PRIMARY KEY(Id)
);
เพิ่มข้อมูลทดสอบ:
INSERT INTO FindPercentInVarcharDemo(Words) VALUES('This is a My%SQL Program');
INSERT INTO FindPercentInVarcharDemo(Words) VALUES('Java is an object oriented');
INSERT INTO FindPercentInVarcharDemo(Words) VALUES('C# is also an object%oriented');
แสดงข้อมูลทั้งหมด:
SELECT * FROM FindPercentInVarcharDemo;
ผลลัพธ์:
+----+-------------------------------+
| Id | Words |
+----+-------------------------------+
| 1 | This is a My%SQL Program |
| 2 | Java is an object oriented |
| 4 | C# is also an object%oriented |
+----+-------------------------------+
ค้นหาแถวที่มีเครื่องหมาย %:
SELECT * FROM FindPercentInVarcharDemo WHERE Words LIKE '%|%%' ESCAPE '|';
ผลลัพธ์ (แสดงเฉพาะแถวที่มี %):
+----+-------------------------------+
| Id | Words |
+----+-------------------------------+
| 1 | This is a My%SQL Program |
| 4 | C# is also an object%oriented |
+----+-------------------------------+
คำอธิบาย
ESCAPE '|'กำหนดให้ | เป็นอักขระ escape'%|%%'หมายถึง: % (wildcard ใดๆ) ตามด้วย |% (เครื่องหมาย % จริง) ตามด้วย % (wildcard ใดๆ)- วิธีนี้ใช้ได้กับเครื่องหมายอื่นๆ เช่น _ (underscore) โดยเปลี่ยนเป็น
'%|_%'แทน