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

MySQL: ใช้ LIKE กับเงื่อนไขหลายอย่างใน WHERE เดียวกัน

ใน MySQL ไม่ต้องใช้ WHERE หลายครั้ง สามารถรวมเงื่อนไขหลายอย่างใน WHERE เดียวกันได้โดยใช้ตัวดำเนินการ AND หรือ OR ร่วมกับ LIKE

รูปแบบคำสั่ง

SELECT * FROM table_name
WHERE column1 LIKE 'pattern1'
  AND column2 LIKE 'pattern2';

ตัวอย่างการใช้งาน

1. สร้างตารางและเพิ่มข้อมูล

CREATE TABLE WhereDemo (
    Id INT,
    Name VARCHAR(20)
);

INSERT INTO WhereDemo VALUES
(101, 'Maxwell'),
(110, 'David'),
(1000, 'Carol'),
(1100, 'Bob'),
(115, 'Sam');

ข้อมูลในตาราง:

+------+---------+
| Id   | Name    |
+------+---------+
|  101 | Maxwell |
|  110 | David   |
| 1000 | Carol   |
| 1100 | Bob     |
|  115 | Sam     |
+------+---------+

2. ค้นหาด้วย LIKE หลายเงื่อนไข (AND)

SELECT * FROM WhereDemo
WHERE Id LIKE '%1100%' 
  AND Name LIKE '%Bob%';

ผลลัพธ์:

+------+------+
| Id   | Name |
+------+------+
| 1100 | Bob  |
+------+------+

ตัวอย่างเพิ่มเติม

ใช้ OR (ตรงเงื่อนไขใดเงื่อนไขหนึ่ง)

SELECT * FROM WhereDemo
WHERE Id LIKE '1%' 
   OR Name LIKE '%a%';

หาแถวที่ Id เริ่มต้น 1 หรือ Name มีตัว 'a'

ใช้ NOT LIKE

SELECT * FROM WhereDemo
WHERE Name NOT LIKE '%o%';

หาแถวที่ Name ไม่มี ตัว 'o'

รวม AND/OR พร้อมวงเล็บ

SELECT * FROM WhereDemo
WHERE (Id LIKE '1%' OR Id LIKE '2%')
  AND Name NOT LIKE '%x%';

เคล็ดลับการใช้ LIKE

  • % - แทนตัวอักษร 0 หรือมากกว่า
  • _ - แทนตัวอักษรเพียง 1 ตัว
  • ค้นหาตัวอักษรจริง % หรือ _ ให้ใช้ escape: LIKE '%\%%' ESCAPE '\'
  • MySQL เริ่มต้นไม่ case-sensitive (ใช้ COLLATE utf8mb4_bin หรือ BINARY หากต้องการ case-sensitive)

การรวมเงื่อนไขใน WHERE เดียวทำให้โค้ดอ่านง่าย ประสิทธิภาพดีกว่า และหลีกเลี่ยงข้อผิดพลาดได้