sql >> Database >  >> RDS >> Mysql

Sorteer decimaal in PHP of MySQL

Dit is lelijk, maar het zal werken:

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

Om deze expressies te testen, kunt u ze gebruiken in een SELECT en controleren of ze de juiste componenten extraheren en dat ze correct zijn geordend:

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

In plaats van uit te leggen hoe dit werkt, ga ik gewoon de belangrijke "trucs" toepassen

  • voeg een afsluitende "." aan het einde van de col heb je dat nodig zodat je niet meerdere keren de laatste positie terugkrijgt,

  • gebruik SUBSTRING_INDEX om een ​​deel op te halen tot n-de '.'

  • gebruik SUBSTRING_INDEX om het achterste gedeelte daarvan op te halen (achterwaarts lezend, naar de eerste punt

  • voeg nul toe om de tekenreeks om te zetten in een numerieke waarde



  1. Hoe u Change Data Capture (CDC) op een database in SQL Server kunt uitschakelen - SQL Server-zelfstudie

  2. Symfony2 - Doctrine2 QueryBuilder WAAR IN ManyToMany-veld

  3. Is er een Laravel-manier om een ​​.SQL-bestand uit te voeren om gegevens te laden?

  4. Zoeken in volledige tekst gebruiken in SQL Server 2008 voor meerdere tabellen, kolommen