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

Sắp xếp số thập phân trong PHP hoặc MySQL

Điều này thật tệ, nhưng nó sẽ hoạt động:

ORDER
   BY SUBSTRING_INDEX(CONCAT( col ,'.'),'.',1) + 0
    , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',2),'.',-1) + 0
    , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',3),'.',-1) + 0
    , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',4),'.',-1) + 0
    , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',5),'.',-1) + 0
    , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',6),'.',-1) + 0
    , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',7),'.',-1) + 0

Để kiểm tra các biểu thức này, bạn có thể sử dụng chúng trong một CHỌN và xác minh rằng chúng trích xuất các thành phần phù hợp và chúng được sắp xếp chính xác:

SELECT col
     , SUBSTRING_INDEX(CONCAT( col ,'.'),'.',1) + 0 AS p1
     , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',2),'.',-1) + 0 AS p2
     , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',3),'.',-1) + 0 AS p3
     , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',4),'.',-1) + 0 AS p4
     , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',5),'.',-1) + 0 AS p5
     , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',6),'.',-1) + 0 AS p6
     , SUBSTRING_INDEX(SUBSTRING_INDEX(CONCAT( col ,'.'),'.',7),'.',-1) + 0 AS p7
  FROM mytable 
 ORDER BY 2,3,4,5,6,7,8

Thay vì giải thích cách thức hoạt động của điều này, tôi sẽ chỉ tìm hiểu các "thủ thuật" quan trọng

  • thêm dấu "." vào cuối cột, bạn cần điều đó để không bị lấy lại vị trí cuối cùng nhiều lần,

  • sử dụng SUBSTRING_INDEX để truy xuất phần lên đến thứ n '.'

  • sử dụng SUBSTRING_INDEX để truy xuất phần cuối của phần đó (đọc ngược, đến dấu chấm đầu

  • thêm số 0, để chuyển đổi chuỗi thành giá trị số



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Câu lệnh SQL - CHỌN nghịch đảo của truy vấn này

  2. Kiểm tra xem cột tồn tại trong bảng MySQL thông qua PHP

  3. Cấp quyền cho đường dẫn

  4. MySql Chèn ID cuối cùng, Trình kết nối .net

  5. Cách kích hoạt toán tử nối ống trong MySQL