Cú pháp
SELECT SUBSTRING_INDEX(cot_ten_file, '.', -1) AS extension FROM bang;
- Tham số 3 =
-1: Lấy phần sau dấu chấm cuối cùng
- Tham số 3 =
1: Lấy phần trước dấu chấm đầu tiên
Ví dụ: Các tên file phức tạp
Dữ liệu
+---------+--------------------------------------------+
| File_Id | File_Name |
+---------+--------------------------------------------+
| 1 | John.AllMySQLConcept.doc |
| 2 | Introductiontojava.txt |
| 3 | C and C++.AllDataStructureandAlgorithm.pdf |
| 4 | C.Users.Desktop.AllMySQLScript.sql |
+---------+--------------------------------------------+
Truy vấn
mysql> SELECT SUBSTRING_INDEX(File_Name, '.', -1) AS AllFileExtension
-> FROM getFileExtensionDemo;
Kết quả
+------------------+
| AllFileExtension |
+------------------+
| doc |
| txt |
| pdf |
| sql |
+------------------+
Xử lý trường hợp đặc biệt
File không có dấu chấm
SELECT SUBSTRING_INDEX('README', '.', -1); -- Trả về 'README' (toàn bộ)
File kết thúc bằng dấu chấm
SELECT SUBSTRING_INDEX('file.', '.', -1); -- Trả về '' (rỗng)
File ẩn Unix (.bashrc)
SELECT SUBSTRING_INDEX('.bashrc', '.', -1); -- Trả về 'bashrc'
Cải tiến: Chỉ lấy extension nếu có dấu chấm
SELECT CASE
WHEN File_Name LIKE '%.%' THEN SUBSTRING_INDEX(File_Name, '.', -1)
ELSE NULL
END AS extension FROM bang;
Ứng dụng thực tế
- Phân loại file upload
- Validate file type cho phép
- Thống kê loại file trong hệ thống
- Tạo icon theo extension