การใช้ INSTR() สำหรับเรียงตามตำแหน่งคำ
ฟังก์ชัน INSTR(str, substr) คืนตำแหน่งแรกที่พบ substr ใน str (1-based) ใช้ใน ORDER BY เพื่อให้คำที่เจอเร็ว/อยู่หน้าขึ้นก่อน
ตัวอย่าง
mysql> create table DemoTable822(Word text);
Query OK, 0 rows affected (1.11 sec)
mysql> insert into DemoTable822 values('Forever');
mysql> insert into DemoTable822 values('ever');
mysql> insert into DemoTable822 values('every');
mysql> insert into DemoTable822 values('everyday');
ค้นหาคำที่มี 'ever' และเรียงตามตำแหน่งที่เจอ
mysql> select * from DemoTable822
where Word LIKE '%ever%'
order by INSTR(Word, 'ever'), Word;
ผลลัพธ์:
+----------+
| Word |
+----------+
| ever | -- เจอตำแหน่ง 1
| every | -- เจอตำแหน่ง 1
| everyday | -- เจอตำแหน่ง 1
| Forever | -- เจอตำแหน่ง 4
+----------+
คำอธิบาย
INSTR('ever', 'ever') = 1INSTR('every', 'ever') = 1INSTR('everyday', 'ever') = 1INSTR('Forever', 'ever') = 4, Wordเรียงรองแบบอักษรสำหรับที่ตำแหน่งเท่ากัน
ฟังก์ชันที่เกี่ยวข้อง
LOCATE(substr, str)- เหมือน INSTR แต่สลับอาร์กิวเมนต์ (Standard SQL)POSITION(substr IN str)- ANSI SQL Standard
สรุป
ใช้ ORDER BY INSTR(column, 'keyword') เรียงให้คำที่เจอคำค้นหาเร็วขึ้น (อยู่หน้า) ขึ้นก่อน