Sử dụng hàm SUBSTRING_INDEX() để tách lấy phần cuối của URL sau dấu phân cách.
Tạo bảng lưu URL
mysql> CREATE TABLE DemoTable (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> URL TEXT
-> );
Chèn URL mẫu
mysql> INSERT INTO DemoTable(URL) VALUES('https://www.example.com/homepage');
mysql> INSERT INTO DemoTable(URL) VALUES('https://www.onlinetest.com/welcome/indexpage');
Xem dữ liệu
mysql> SELECT * FROM DemoTable;
+----+---------------------------------------------+ | Id | URL | +----+---------------------------------------------+ | 1 | https://www.example.com/homepage | | 2 | https://www.onlinetest.com/welcome/indexpage| +----+---------------------------------------------+
Trích xuất phần cuối sau dấu '/' cuối cùng
mysql> SELECT SUBSTRING_INDEX(URL, '/', -1) FROM DemoTable;
+------------------------------+ | SUBSTRING_INDEX(URL, '/', -1) | +------------------------------+ | homepage | | indexpage | +------------------------------+
Giải thích SUBSTRING_INDEX()
SUBSTRING_INDEX(str, delim, count)count > 0: Trả về phần từ đầu đến trước dấu phân cách thứcountcount < 0: Trả về phần từ sau dấu phân cách thứ|count|từ cuối- Ví dụ:
SUBSTRING_INDEX('a/b/c', '/', -1)→'c'
Các biến thể hữu ích
-- Lấy domain: SUBSTRING_INDEX(SUBSTRING_INDEX(URL, '://', -1), '/', 1) -- Lấy đường dẫn đầy đủ: SUBSTRING_INDEX(URL, '://', -1) rồi bỏ domain -- Lấy extension file: SUBSTRING_INDEX(URL, '.', -1)
Lưu ý
Ví dụ gốc sử dụng backslash \\ nhưng URL chuẩn dùng forward slash /. MySQL hiển thị backslash đơn do escape. Luôn dùng / cho URL thực tế.