Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Trích xuất từ cuối cùng của chuỗi trong MySQL (SUBSTRING_INDEX)


Sử dụng SUBSTRING_INDEX(str, delim, count) với count = -1 để lấy phần sau dấu phân cách cuối cùng.

Cú pháp

SELECT SUBSTRING_INDEX(column_name, ' ', -1) AS last_word FROM table_name;

Giải thích:

  • count > 0: lấy phần trước dấu phân cách thứ count (từ trái).
  • count < 0: lấy phần sau dấu phân cách thứ |count| (từ phải).
  • -1 = sau dấu phân cách cuối cùng.

Ví dụ minh họa

mysql> CREATE TABLE FirstWordDemo (AllWords LONGTEXT);
Query OK, 0 rows affected (0.83 sec)

mysql> INSERT INTO FirstWordDemo VALUES
('This is the first MySQL Query'),
('MySQL is a Relational Database'),
('FirstWord is not correct');
Query OK, 3 rows affected

Truy vấn từ cuối:

mysql> SELECT SUBSTRING_INDEX(AllWords, ' ', -1) AS MyFirstWordResult 
FROM FirstWordDemo;

Kết quả:

+-------------------+
| MyFirstWordResult |
+-------------------+
| Query             |
| Database          |
| correct           |
+-------------------+

Các biến thể hữu ích

Mục đích Cú pháp Ví dụ kết quả
Từ đầu tiên SUBSTRING_INDEX(col, ' ', 1) 'This'
Từ cuối cùng SUBSTRING_INDEX(col, ' ', -1) 'Query'
2 từ cuối SUBSTRING_INDEX(col, ' ', -2) 'MySQL Query'
Bỏ từ đầu SUBSTRING_INDEX(col, ' ', -1 * (LENGTH(col)-LENGTH(REPLACE(col,' ','')))) Phức tạp, dùng app layer

Lưu ý

  • Nếu chuỗi không chứa dấu phân cách, trả về toàn bộ chuỗi.
  • Dấu phân cách có thể là chuỗi (không chỉ 1 ký tự): SUBSTRING_INDEX(url, '/', -1) lấy segment cuối URL.
  • Xử lý NULL: SUBSTRING_INDEX(NULL, ...) trả về NULL.