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

เลือกข้อมูลที่ขึ้นต้นด้วยค่าเฉพาะใน MySQL ด้วย LIKE

บทความนี้สาธิตการใช้ LIKE พร้อม Wildcard % เพื่อค้นหาแถวที่คอลัมน์ขึ้นต้นด้วยค่าเฉพาะ (Prefix Search)

สร้างตารางและข้อมูลทดสอบ

mysql> CREATE TABLE DemoTable690(
    UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserValue VARCHAR(100)
);
Query OK, 0 rows affected (0.56 sec)

mysql> INSERT INTO DemoTable690(UserValue) VALUES('567890');
mysql> INSERT INTO DemoTable690(UserValue) VALUES('789032');
mysql> INSERT INTO DemoTable690(UserValue) VALUES('567342');
mysql> INSERT INTO DemoTable690(UserValue) VALUES('890678');

คิวรีค้นหาขึ้นต้นด้วย 567

mysql> SELECT * FROM DemoTable690 WHERE UserValue LIKE '567%';

ผลลัพธ์

+--------+-----------+
| UserId | UserValue |
+--------+-----------+
| 1      | 567890    |
| 3      | 567342    |
+--------+-----------+

คำอธิบาย Wildcard:

  • % - แทนตัวอักษรใดๆ จำนวนเท่าไรก็ได้ (รวม 0 ตัว)
  • _ - แทนตัวอักษรใดๆ เพียง 1 ตัว
  • '567%' - ขึ้นต้นด้วย 567 ตามด้วยอะไรก็ได้
  • '%567' - ลงท้ายด้วย 567
  • '%567%' - มี 567 อยู่ตรงไหนก็ได้

ประสิทธิภาพ: LIKE 'prefix%' สามารถใช้ Index ได้ (Sargable) แต่ LIKE '%suffix' หรือ LIKE '%middle%' ใช้ Index ไม่ได้ → Full Table Scan