Lấy phần trái chuỗi trước dấu phân cách với SUBSTRING_INDEX()
Hàm SUBSTRING_INDEX(str, delim, count) trả về phần chuỗi trước dấu phân cách thứ count. Với count = 1 lấy phần bên trái dấu phân cách đầu tiên.
Cú pháp
SELECT SUBSTRING_INDEX(cotChuoi, 'dauPhanCach', 1) AS phanTrai
FROM tenBang;
Ví dụ minh họa
Tạo bảng LeftStringDemo:
CREATE TABLE LeftStringDemo (
Id INT,
Words VARCHAR(100)
);
Chèn dữ liệu có dấu ==:
INSERT INTO LeftStringDemo VALUES
(1, 'MySQL==6789'),
(2, 'Java==Object Oriented'),
(3, 'C Language==Procedural Programming'),
(4, 'PL/SQL==Structured Programming');
Truy vấn lấy phần trước ==:
SELECT Id, SUBSTRING_INDEX(Words, '==', 1) AS OnlyLeftHandSide
FROM LeftStringDemo;
Kết quả
+------+-----------------------+
| Id | OnlyLeftHandSide |
+------+-----------------------+
| 1 | MySQL |
| 2 | Java |
| 3 | C Language |
| 4 | PL/SQL |
+------+-----------------------+
Mở rộng: Lấy phần phải (count âm)
Dùng count = -1 để lấy phần sau dấu phân cách cuối cùng:
SELECT SUBSTRING_INDEX('a/b/c/d', '/', -1); -- kết quả: 'd'
Dùng count = 2 lấy phần trước dấu phân cách thứ 2:
SELECT SUBSTRING_INDEX('a/b/c/d', '/', 2); -- kết quả: 'a/b'
Lưu ý: Hàm này phân biệt chữ hoa/thường cho dấu phân cách.