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

ใช้ LIKE และ NOT LIKE ใน MySQL แสดงผลลัพธ์ที่คล้ายกัน

ใช้ LIKE และ NOT LIKE กรองข้อมูลด้วย Pattern Matching รองรับ Wildcard % (หลายตัวอักษร) และ _ (ตัวอักษรเดียว)

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

1. สร้างตารางและข้อมูล

mysql> create table DemoTable (CollegeCode varchar(100));
mysql> insert into DemoTable values('Col.1995.01.21'), ('Col.2016.11.22'), (NULL), ('Col.2018.12.01'), ('Col.2019.03.12');

2. ใช้ LIKE หาที่มี "Col"

mysql> SELECT * FROM DemoTable WHERE CollegeCode LIKE '%Col%' OR CollegeCode IS NULL;

ผลลัพธ์ (ทั้ง 5 แถว)

+----------------+
| CollegeCode    |
+----------------+
| Col.1995.01.21 |
| Col.2016.11.22 |
| NULL           |
| Col.2018.12.01 |
| Col.2019.03.12 |
+----------------+

3. ใช้ NOT LIKE หาที่ไม่มี "College"

mysql> SELECT * FROM DemoTable WHERE CollegeCode NOT LIKE '%College%' OR CollegeCode IS NULL;

ผลลัพธ์ (ทั้ง 5 แถว - เพราะไม่มีคำว่า College)

+----------------+
| CollegeCode    |
+----------------+
| Col.1995.01.21 |
| Col.2016.11.22 |
| NULL           |
| Col.2018.12.01 |
| Col.2019.03.12 |
+----------------+

ข้อสังเกตสำคัญเกี่ยวกับ NULL

  • NULL LIKE 'anything' → คืนค่า NULL (ไม่ใช่ TRUE/FALSE)
  • ต้องเพิ่ม OR column IS NULL หากต้องการรวม NULL
  • NOT LIKE กับ NULL → คืนค่า NULL → ต้องใส่ OR IS NULL เช่นกัน

Wildcard Pattern

Patternความหมาย
%abc%มี abc อยู่ตรงไหนก็ได้
abc%ขึ้นต้นด้วย abc
%abcลงท้ายด้วย abc
_bcตัวแรกอะไรก็ได้ ตามด้วย bc
[abc]ตัวอักษรใดตัวหนึ่งใน a,b,c (ต้องใช้ REGEXP)