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

ดึงคำสุดท้ายจากข้อความใน MySQL ใช้ SUBSTRING_INDEX


ฟังก์ชัน 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