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

Cách tách số từ bản ghi trong MySQL?


Dùng CONVERT() kết hợp SUBSTRING_INDEX() hoặc REGEXP.

Tạo bảng

mysql> CREATE TABLE TextIntoNumberDemo (Name VARCHAR(100));
Query OK, 0 rows affected (0.47 sec)

Chèn dữ liệu dạng 'John-11'

mysql> INSERT INTO TextIntoNumberDemo VALUES('John-11'),('John-12'),('John-2'),('John-4');
Query OK, 4 rows affected (0.14 sec)
mysql> SELECT * FROM TextIntoNumberDemo;
+---------+
| Name    |
+---------+
| John-11 |
| John-12 |
| John-2  |
| John-4  |
+---------+
4 rows in set (0.00 sec)

Tách số sau dấu '-' và sắp xếp

mysql> SELECT Name,
    -> CONVERT(SUBSTRING_INDEX(Name, '-', -1), UNSIGNED INTEGER) AS MyNumber
    -> FROM TextIntoNumberDemo
    -> ORDER BY MyNumber;
+---------+----------+
| Name    | MyNumber |
+---------+----------+
| John-2  | 2        |
| John-4  | 4        |
| John-11 | 11       |
| John-12 | 12       |
+---------+----------+
4 rows in set (0.00 sec)

SUBSTRING_INDEX(Name, '-', -1) lấy phần sau dấu '-' cuối cùng. CONVERT(..., UNSIGNED) ép sang số để sắp xếp đúng thứ tự số (2,4,11,12 thay vì 11,12,2,4).