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

Trích xuất phần số từ chuỗi trong MySQL

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:

  1. REVERSE đảo chuỗi: 38391nhoJ
  2. FORMAT(..., 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)
  3. REVERSE lại: 19,383nhoJ
  4. REPLACE(..., ',', '') xóa dấu phẩy: 19383nhoJ
  5. 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]+$').