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

MySQL: จำกัด LIKE ให้ขึ้นต้นด้วยอักขระเฉพาะ (Starts With)


คำอธิบาย

ใช้ LIKE 'prefix%' (ไม่มี % นำหน้า) เพื่อค้นหาค่าที่ขึ้นต้นด้วยข้อความที่กำหนด

ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง

mysql> create table DemoTable ( 
    FirstName varchar(40) ); 
Query OK, 0 rows affected (0.52 sec)

การเพิ่มข้อมูล

mysql> insert into DemoTable values('John'); 
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('Adam'); 
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values('David'); 
Query OK, 1 row affected (0.21 sec)
mysql> insert into DemoTable values('Mike'); 
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Sam'); 
Query OK, 1 row affected (0.09 sec)

แสดงข้อมูลทั้งหมด

mysql> select * from DemoTable;

ผลลัพธ์:

+-----------+
| FirstName |
+-----------+
| John      |
| Adam      |
| David     |
| Mike      |
| Sam       |
+-----------+
5 rows in set (0.00 sec)

คิวรี่ค้นหาขึ้นต้นด้วย D หรือ S

mysql> select * from DemoTable 
where FirstName LIKE 'D%' or FirstName LIKE 'S%';

ผลลัพธ์

+-----------+
| FirstName |
+-----------+
| David     |
| Sam       |
+-----------+
2 rows in set (0.00 sec)

คำอธิบาย Pattern

Patternความหมายตัวอย่าง Match
LIKE 'D%'ขึ้นต้นด้วย DDavid, Dan, Doe
LIKE '%D'ลงท้ายด้วย DDavid, Road, Seed
LIKE '%D%'มี D อยู่ตรงไหนก็ได้David, Adam, Middle
LIKE 'D\_%'ขึ้นต้น D ตามด้วย 1 ตัวอักษร แล้วอะไรก็ได้Da, Do, D1

ประสิทธิภาพ: ใช้ Index ได้

LIKE 'prefix%' ใช้ Index ได้ (Range Scan)

LIKE '%suffix' หรือ LIKE '%middle%' ใช้ Index ไม่ได้ (Full Table Scan)

REGEXP ทางเลือก

WHERE FirstName REGEXP '^(D|S)'  -- ขึ้นต้น D หรือ S