คำอธิบาย
ใช้ LIKE 'Joh%' ค้นหาค่าที่ขึ้นต้นด้วย 'Joh' ร่วมกับ UNION เพื่อรวมผลลัพธ์ (แม้ในตัวอย่างมีตารางเดียว)
ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable (
Name varchar(40) );
Query OK, 0 rows affected (0.55 sec)
การเพิ่มข้อมูล
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Sam');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Mike');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values('Ethan');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Johnson');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Bob');
Query OK, 1 row affected (0.12 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
ผลลัพธ์:
+---------+ | Name | +---------+ | John | | Sam | | Mike | | Ethan | | Johnson | | Bob | +---------+ 6 rows in set (0.00 sec)
คิวรี่ค้นหาขึ้นต้น 'Joh' ด้วย UNION
mysql> select * from (
select Name as myValue from DemoTable
union
select Name from DemoTable
) tbl where myValue like 'Joh%';
ผลลัพธ์
+---------+ | myValue | +---------+ | John | | Johnson | +---------+ 2 rows in set (0.00 sec)
คำอธิบาย
- UNION (ไม่มี ALL): รวมและลบค่าซ้ำ (Distinct)
- ในตัวอย่าง UNION ตารางเดียวกัน 2 ครั้ง → ไม่มีผล (Distinct แล้ว)
- LIKE 'Joh%': ขึ้นต้นด้วย Joh
- Match: John, Johnson
- ไม่ Match: Sam, Mike, Ethan, Bob
วิธีง่ายกว่า (ไม่ต้อง UNION)
SELECT Name FROM DemoTable WHERE Name LIKE 'Joh%';
ให้ผลลัพธ์เหมือนกัน UNION ในที่นี้ซ้ำซ้อน
Case Insensitive Search
Default Collation (utf8mb4_general_ci) เป็น Case Insensitive:
WHERE Name LIKE 'joh%' -- หา john, JOHN, John ได้ทั้งหมด