sql >> Databáze >  >> RDS >> Mysql

Přirozené řazení SQL ORDER BY

Udělá to:

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

4 úrovně the ORDER BY :

  1. REGEXP přiřadí libovolné alfa linii 1 a nealfa 0
  2. SIGNED INT Seřadí všechna čísla podle části před pomlčkou.
  3. SIGNED INT po odstranění pomlčky seřadí libovolnou z položek se stejnou hodnotou před pomlčkou podle části za pomlčkou. Potenciálně by mohl nahradit číslo 2, ale nechtěl bych s 90-1 zacházet stejně jako s 9-01, pokud by nastal případ.
  4. Seřadí písmena abecedně.

Ukázka:SQL Fiddle




  1. Kritika mého návrhu databáze MySQL pro neomezená DYNAMICKÁ pole

  2. obnovte stránku html, když byla vložena nová položka SQL

  3. Jak vybrat ID řádku mysql pro klauzuli WHERE na UPDATE, INSERT, DELETE přes php?

  4. Cizí klíče vs rozdělení