การค้นหาค่าหลายรูปแบบด้วย LIKE และ OR
เมื่อต้องการค้นหาแถวที่คอลัมน์ตรงกับรูปแบบ (Pattern) หลายรูปแบบ เราสามารถใช้ LIKE ร่วมกับ OR ได้
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable1027 (Id INT, Name VARCHAR(100));
Query OK, 0 rows affected (1.64 sec)
mysql> INSERT INTO DemoTable1027 VALUES(100,'John');
mysql> INSERT INTO DemoTable1027 VALUES(20,'Chris');
mysql> INSERT INTO DemoTable1027 VALUES(200,'Robert');
mysql> INSERT INTO DemoTable1027 VALUES(400,'Mike');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable1027;
ผลลัพธ์:
+------+--------+
| Id | Name |
+------+--------+
| 100 | John |
| 20 | Chris |
| 200 | Robert |
| 400 | Mike |
+------+--------+
4 rows in set (0.00 sec)
คำสั่งค้นหา Id ที่มี '100' หรือ '200' อยู่ในตัวเลข
mysql> SELECT * FROM DemoTable1027 WHERE Id LIKE '%100%' OR Id LIKE '%200%';
ผลลัพธ์:
+------+--------+
| Id | Name |
+------+--------+
| 100 | John |
| 200 | Robert |
+------+--------+
2 rows in set (0.74 sec)
คำอธิบาย
Id LIKE '%100%': Id ที่มี '100' อยู่ตรงไหนก็ได้ (นำหน้า, กลาง, ท้าย)OR: รวมเงื่อนไข ทั้งสองต้องเป็นจริงเพียงอย่างใดอย่างหนึ่ง- Id เป็น INT แต่ MySQL แปลงเป็นสตริงอัตโนมัติสำหรับ LIKE
- ควรระวัง: LIKE '%...%' ไม่ใช้ Index ได้ (Full Table Scan) เหมาะตารางเล็กหรือไม่บ่อย
- สำหรับค่าที่แน่นอน ควรใช้
IN (100, 200)แทน จะเร็วกว่ามาก