Để sắp xếp, hãy sử dụng ORDER BY SUBSTRING(). Hãy cùng tạo một bảng trước:
mysql> CREATE TABLE DemoTable (
-> Value VARCHAR(40)
-> ); Query OK, 0 rows affected (0.59 sec)
Chèn một số bản ghi vào bảng bằng lệnh INSERT:
mysql> INSERT INTO DemoTable VALUES('2321/78/54-6'); Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable VALUES('2321/78/54-8'); Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable VALUES('2321/78/54-5'); Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('2321/78/54-9'); Query OK, 1 row affected (0.21 sec)
Hiển thị tất cả bản ghi từ bảng bằng lệnh SELECT:
mysql> SELECT * FROM DemoTable;
Kết quả sẽ như sau:
+--------------+ | Value | +--------------+ | 2321/78/54-6 | | 2321/78/54-8 | | 2321/78/54-5 | | 2321/78/54-9 | +--------------+ 4 rows in set (0.00 sec)
Dưới đây là truy vấn để sắp xếp các bản ghi có ký tự đặc biệt:
mysql> SELECT * FROM DemoTable
-> WHERE VALUE LIKE '2321/78/54%'
-> ORDER BY SUBSTRING(Value FROM 1 FOR 10), CAST(SUBSTRING(Value FROM 11) AS DECIMAL);
Kết quả sẽ như sau:
+--------------+ | Value | +--------------+ | 2321/78/54-9 | | 2321/78/54-8 | | 2321/78/54-6 | | 2321/78/54-5 | +--------------+ 4 rows in set (0.05 sec)