Kết hợp các hàm chuỗi REVERSE(), FORMAT(), REPLACE() để tách phần số ở cuối chuỗi (giả định số nằm ở cuối, không có dấu phân cách).
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('John19383');
mysql> INSERT INTO DemoTable VALUES('Carol9999');
mysql> INSERT INTO DemoTable VALUES('David123456');
Xem dữ liệu:
mysql> SELECT * FROM DemoTable;
Kết quả
+-------------+ | StudentId | +-------------+ | John19383 | | Carol9999 | | David123456 | +-------------+
Trích xuất phần số:
mysql> SELECT REPLACE(REVERSE(FORMAT(REVERSE(StudentId), 0)), ',', '') AS OnlyDigit FROM DemoTable;
Kết quả
+-----------+ | OnlyDigit | +-----------+ | 19383 | | 9999 | | 123456 | +-----------+
Giải thích thủ thuật:
REVERSEđảo chuỗi:38391nhoJFORMAT(..., 0)định dạng số với dấu phẩy nhóm 3 chữ số:38,391(chỉ tác động lên phần số ở đầu chuỗi đảo)REVERSElại:19,383nhoJREPLACE(..., ',', '')xóa dấu phẩy:19383nhoJ- Kết quả vẫn còn chữ cái! Cách này chỉ hoạt động đúng nếu chuỗi kết thúc bằng số và không có số ở giữa.
Cách hiện đại (MySQL 8.0+): Dùng REGEXP_SUBSTR(StudentId, '[0-9]+$').