ใช้ INSTR() หาตำแหน่ง Substring แบบ Case-Insensitive
INSTR(str, substr) คืนตำแหน่ง (1-based) ของ substr แรกที่พบใน str คล้าย stripos() ของ PHP (แต่ INSTR เป็น Case-Insensitive ตาม Collation ของคอลัมน์)
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (Title TEXT);
INSERT INTO DemoTable VALUES
('MySQL is my favourite subject'),
('MongoDB is not my favourite subject');
ข้อมูลในตาราง
+-------------------------------------+ | Title | +-------------------------------------+ | MySQL is my favourite subject | | MongoDB is not my favourite subject | +-------------------------------------+
คำสั่งหาตำแหน่งคำว่า 'favourite'
SELECT INSTR(Title, 'favourite') AS Position FROM DemoTable;
ผลลัพธ์
+----------+ | Position | +----------+ | 13 | | 19 | +----------+
คำอธิบาย: ตำแหน่งเริ่มต้นที่ 1 (ไม่ใช่ 0) คืนค่า 0 หากไม่พบ
ฟังก์ชันค้นหาสตริงอื่นๆ ใน MySQL:
| ฟังก์ชัน | คืนค่า | Case-Sensitive | หมายเหตุ |
|---|---|---|---|
| INSTR(str, substr) | Position (1-based) | ขึ้นกับ Collation | ไมารองรับ Offset |
| LOCATE(substr, str, [pos]) | Position (1-based) | ขึ้นกับ Collation | รองรับ Offset เริ่มค้นหา |
| POSITION(substr IN str) | Position (1-based) | ขึ้นกับ Collation | SQL Standard |
| FIND_IN_SET(str, strlist) | Index ใน CSV list | Case-Insensitive | สำหรับ CSV |
| REGEXP / RLIKE | Boolean (0/1) | ขึ้นกับ Collation | Regular Expression |