Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Sortuj dziesiętne w PHP lub MySQL

To brzydkie, ale zadziała:

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

Aby przetestować te wyrażenia, możesz użyć ich w SELECT i sprawdzić, czy wyodrębniają właściwe komponenty i są poprawnie uporządkowane:

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

Zamiast wyjaśniać, jak to działa, po prostu trafię na ważne „sztuczki”

  • dołącz końcowy „.” na końcu kolumny, jest to potrzebne, aby nie wracać wielokrotnie do ostatniej pozycji,

  • użyj SUBSTRING_INDEX, aby pobrać część do n-tego „.”

  • użyj SUBSTRING_INDEX, aby pobrać końcową część tego (czytając wstecz, do wiodącej kropki

  • dodaj zero, aby przekonwertować ciąg na wartość liczbową



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd ogólny:1615 Przygotowane oświadczenie wymaga ponownego przygotowania

  2. MySQL - Kontroluj, który wiersz jest zwracany przez grupę przez

  3. Instrukcja wstawiania MySQL (wstaw do tabeli (kolumn) instrukcja select)

  4. mysql:po prostu wybierz coś, co wydarzy się w weekend

  5. Czy urlencode() jest wystarczająco dobry, aby powstrzymać wszystkie ataki typu SQL injection w roku 2011?