Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sắp xếp tự nhiên LỆNH SQL THEO

Điều này sẽ làm được điều đó:

SELECT value
FROM Table1
ORDER BY value REGEXP '^[A-Za-z]+$'
        ,CAST(value as SIGNED INTEGER)
        ,CAST(REPLACE(value,'-','')AS SIGNED INTEGER)
        ,value

4 cấp độ của the ORDER BY :

  1. REGEXP gán bất kỳ dòng alpha nào là 1 và dòng không phải alpha là 0
  2. SIGNED INT Sắp xếp tất cả các số theo phần trước dấu gạch ngang.
  3. SIGNED INT sau khi loại bỏ dấu gạch ngang, sắp xếp bất kỳ mục nào có cùng giá trị trước dấu gạch ngang theo phần sau dấu gạch ngang. Có khả năng thay thế số 2, nhưng sẽ không muốn coi 90-1 giống như 9-01 nếu trường hợp này phát sinh.
  4. Sắp xếp các chữ cái theo thứ tự bảng chữ cái.

Demo: SQL Fiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng cơ sở dữ liệu XAMPP MySql từ một máy tính khác

  2. SQL Nhận X các mục nhập cuối cùng từ post_type 'tùy chỉnh' đếm từng người dùng số post_type tùy chỉnh

  3. Đếm số lượng từ phù hợp

  4. Làm cách nào để thể hiện một mối quan hệ có nhiều thông qua trong Entity Framework 5?

  5. Đối số được cung cấp không hợp lệ cho foreach () trong Codeigniter