ฟังก์ชัน SUBSTRING_INDEX()
SUBSTRING_INDEX(str, delim, count) คืนค่าส่วนย่อยก่อน/หลัง Delimiter ตัวที่ count:
count > 0: นับจากซ้าย (คืนค่าก่อน Delimiter ตัวที่ count)count < 0: นับจากขวา (คืนค่าหลัง Delimiter ตัวที่ |count|)
ดึงคำสุดท้าย (หลัง Space ตัวสุดท้าย)
SELECT SUBSTRING_INDEX(column_name, ' ', -1) AS last_word
FROM your_table;
ตัวอย่างการใช้งาน
สร้างตารางและข้อมูลประโยค
CREATE TABLE FirstWordDemo (AllWords LONGTEXT);
INSERT INTO FirstWordDemo VALUES
('This is the first MySQL Query'),
('MySQL is a Relational Database'),
('FirstWord is not correct');
ข้อมูลต้นฉบับ
+--------------------------------+
| AllWords |
+--------------------------------+
| This is the first MySQL Query |
| MySQL is a Relational Database |
| FirstWord is not correct |
+--------------------------------+
คำสั่งดึงคำสุดท้าย
SELECT SUBSTRING_INDEX(AllWords, ' ', -1) AS MyFirstWordResult
FROM FirstWordDemo;
ผลลัพธ์
+-------------------+
| MyFirstWordResult |
+-------------------+
| Query |
| Database |
| correct |
+-------------------+
กรณีศึกษาเพิ่มเติม
ดึงคำแรก (ก่อน Space ตัวแรก)
SELECT SUBSTRING_INDEX(AllWords, ' ', 1) AS first_word FROM FirstWordDemo;
-- ผลลัพธ์: This, MySQL, FirstWord
ดึง 2 คำสุดท้าย
SELECT SUBSTRING_INDEX(AllWords, ' ', -2) AS last_two_words FROM FirstWordDemo;
-- ผลลัพธ์: MySQL Query, Relational Database, not correct
ใช้ Delimiter อื่น (Comma, Slash, etc.)
SELECT SUBSTRING_INDEX('a,b,c,d', ',', -1); -- 'd'
SELECT SUBSTRING_INDEX('/path/to/file.txt', '/', -1); -- 'file.txt'
กรณีไม่มี Delimiter
SELECT SUBSTRING_INDEX('NoSpace', ' ', -1); -- 'NoSpace' (คืนทั้งสตริง)
ประสิทธิภาพ
- ทำงานเร็ว สำหรับข้อความสั้น-ปานกลาง
- ข้อความยาวมาก (LONGTEXT) อาจช้า ควรพิจารณา Full-Text Search หรือ Application Layer