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

Lấy phần cuối URL (last index) trong MySQL với SUBSTRING_INDEX

Tách lấy phần sau dấu phân cách cuối cùng trong chuỗi URL

Dùng SUBSTRING_INDEX(chuoi, dauPhanCach, -1) với count âm để lấy phần tử cuối sau dấu phân cách.

Cú pháp

SELECT SUBSTRING_INDEX(cotUrl, '/', -1) AS phanCuoi
FROM tenBang;

Ví dụ minh họa

Bảng LastIndexString:

CREATE TABLE LastIndexString (Id INT, yourURL TEXT);
INSERT INTO LastIndexString VALUES
(1, 'https://www.example.com/home.html'),
(2, 'https://exampledemo.example.com/index.jsp'),
(3, 'https://www.example.com/question/LastString');

Truy vấn lấy tên file/trang cuối:

SELECT Id, SUBSTRING_INDEX(yourURL, '/', -1) AS LastStringFromURL
FROM LastIndexString;

Kết quả

+------+-------------------+
| Id   | LastStringFromURL |
+------+-------------------+
|    1 | home.html         |
|    2 | index.jsp         |
|    3 | LastString        |
+------+-------------------+

Mở rộng: Lấy domain, path, query string

-- Lấy domain (phần sau //, trước / đầu tiên)
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(url, '//', -1), '/', 1) AS domain;

-- Lấy path (phần sau domain)
SELECT SUBSTRING_INDEX(url, '/', 3) AS protocol_domain,
       SUBSTRING(url, LENGTH(SUBSTRING_INDEX(url, '/', 3)) + 1) AS path;

Với URL phức tạp, cân nhắc dùng REGEXP hoặc xử lý ở application layer.

Lưu ý

  • SUBSTRING_INDEX phân biệt chữ hoa/thường cho dấu phân cách.
  • Dấu phân cách có thể là chuỗi nhiều ký tự (ví dụ: '::').
  • Hiệu năng tốt, không dùng regex.