ใช้ 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) |