Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Urutkan desimal di PHP atau MySQL

Ini jelek, tapi akan berhasil:

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

Untuk menguji ekspresi ini, Anda dapat menggunakannya dalam SELECT dan memverifikasi bahwa mereka mengekstrak komponen yang tepat, dan mereka diurutkan dengan benar:

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

Daripada menjelaskan cara kerjanya, saya hanya akan membahas "trik" penting

  • tambahkan tanda "." di akhir col, Anda membutuhkannya agar tidak kembali ke posisi terakhir beberapa kali,

  • gunakan SUBSTRING_INDEX untuk mengambil bagian hingga '.'

  • gunakan SUBSTRING_INDEX untuk mengambil bagian akhir dari itu (membaca mundur, ke titik awal

  • tambahkan nol, untuk mengubah string menjadi nilai numerik



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara melihat isi tabel di GUI Mysql Workbench?

  2. Tentukan Logika untuk MySQL Select - Sistem Reservasi

  3. Apa yang lebih baik di MYSQL count(*) atau count(1)?

  4. Bagaimana Anda memungkinkan pelanggan untuk masuk ke situs Anda menggunakan akun Google mereka?

  5. mySQL pilih kode pos dalam x km/mil dalam jangkauan y