Dùng SUBSTRING_INDEX() kết hợp SUBSTRING() và INSTR() để lấy phần sau dấu gạch ngang (hoặc trước, tùy logic).
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE DemoTable (StudentId VARCHAR(100));
Chèn dữ liệu:
mysql> INSERT INTO DemoTable VALUES('STU-1011');
mysql> INSERT INTO DemoTable VALUES('STU-95968686');
Xem dữ liệu:
mysql> SELECT * FROM DemoTable;
Kết quả
+--------------+ | StudentId | +--------------+ | STU-1011 | | STU-95968686 | +--------------+
Lấy phần sau dấu - (phần số):
mysql> SELECT SUBSTRING_INDEX(SUBSTRING(StudentId, INSTR(StudentId, '-') + 1), ' ', 1) FROM DemoTable;
Kết quả
+------------------------------------------------------------------------+ | SUBSTRING_INDEX(SUBSTRING(StudentId, INSTR(StudentId, '-') + 1), ' ', 1) | +------------------------------------------------------------------------+ | 1011 | | 95968686 | +------------------------------------------------------------------------+
Giải thích đơn giản hơn: SUBSTRING_INDEX(StudentId, '-', -1) cũng cho kết quả y hệt (lấy phần sau dấu - cuối cùng). Cách trong ví dụ phức tạp hơn nhưng minh họa kết hợp nhiều hàm chuỗi.