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

Cách trích xuất một phần của URL trong MySQL?

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ứ count
  • count < 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ế.