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

ค้นหาสตริงที่ขึ้นต้นด้วยคำนำหน้า (Prefix) ใน MySQL ด้วย LIKE

ใช้ตัวดำเนินการ LIKE กับ wildcard % เพื่อค้นหาสตริงที่ขึ้นต้นด้วยคำนำหน้าที่กำหนด

ไวยากรณ์

SELECT * FROM yourTableName WHERE yourColumnName LIKE 'yourPrefixValue%';

สร้างตารางตัวอย่าง

mysql> CREATE TABLE findStringWithGivenPrefixDemo (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserMessage TEXT
    -> );

เพิ่มข้อมูลตัวอย่าง

mysql> INSERT INTO findStringWithGivenPrefixDemo(UserMessage) VALUES
('Hi Good Morning !!!'),
('Hey I am busy!!'),
('Hello what are you doing!!!'),
('Hi I am learning MongoDB!!!');

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

mysql> SELECT * FROM findStringWithGivenPrefixDemo;

ผลลัพธ์:

+--------+-----------------------------+
| UserId | UserMessage                 |
+--------+-----------------------------+
| 1      | Hi Good Morning !!!         |
| 2      | Hey I am busy!!             |
| 3      | Hello what are you doing!!! |
| 4      | Hi I am learning MongoDB!!! |
+--------+-----------------------------+

ค้นหาข้อความขึ้นต้นด้วย "Hi"

mysql> SELECT * FROM findStringWithGivenPrefixDemo WHERE UserMessage LIKE 'Hi%';

ผลลัพธ์ (2 แถว):

+--------+-----------------------------+
| UserId | UserMessage                 |
+--------+-----------------------------+
| 1      | Hi Good Morning !!!         |
| 4      | Hi I am learning MongoDB!!! |
+--------+-----------------------------+

Wildcard ใน LIKE

Wildcardความหมายตัวอย่าง
%ตัวอักษรจำนวนใดก็ได้ (รวม 0 ตัว)'Hi%' = Hi, Hi there, Hi123
_ตัวอักษรเพียง 1 ตัว'H_' = Ha, Hi, H1 (ไม่ใช่ Hi there)

รูปแบบค้นหาที่พบบ่อย

  • LIKE 'prefix%' - เริ่มต้นด้วย prefix (ใช้ index ได้)
  • LIKE '%suffix' - ลงท้ายด้วย suffix (ไม่ใช้ index)
  • LIKE '%middle%' - มีคำ middle อยู่กลาง (ไม่ใช้ index)
  • LIKE '_attern' - ตัวแรกอะไรก็ได้ ตามด้วย attern

Case Sensitivity

  • Default collation (utf8mb4_general_ci): Case-insensitive → 'Hi%' ตรงกับ 'hi', 'HI', 'Hi'
  • Binary collation (utf8mb4_bin): Case-sensitive → 'Hi%' ตรงกับ 'Hi' เท่านั้น
  • บังคับ case-sensitive: WHERE column LIKE BINARY 'Hi%'

ประสิทธิภาพ

  • LIKE 'prefix%' ใช้ index ได้ (Range scan)
  • LIKE '%suffix' และ LIKE '%middle%' ต้อง Full table scan
  • พิจารณา Full-text search สำหรับข้อความยาว/ค้นหาบ่อย