Ordinare campo VARCHAR come INT da query MySQL

Avete un campo VARCHAR su cui avete salvato dei prezzi o delle statistiche?
Volete ordinarli ma non sapete come fare? Semplice come fare una query!

ORDER BY CAST(nome_campo AS SIGNED) ASC

dove per nome_campo andrà il campo da trattare come INT.
Tiene in considerazione anche i numeri con virgola o decimali e svariati altri tipi di campo:

  • BINARY
  • CHAR
  • DATE
  • DATETIME
  • DECIMAL
  • SIGNED
  • UNSIGNED
  • TIME

una vera chicca per chi come me usa sovente VARCHAR!

Annunci

10 commenti

  1. caro portapipe,
    ho trovato questo tuo articolo grazie a Google:

    Ordinare campo VARCHAR come INT da query MySQL

    Ho esattamente lo stesso problema ma purtroppo ne la tua soluzione (ORDER BY CAST(nome_campo AS SIGNED) ASC) ne altre (ORDER BY ABS(nome_campo) ASC oppure ORDER BY (nome_campo + 0) ) funzionano.
    Ho su un sito una lista di prodotti con tre colonne dati che cliccate nelle etichette si dovrebbero riordinare ASC e DESC.
    I campi sono VARCHAR ed il DB è codificato UTF8.
    Il sito è approntato on line in un area test e ti avrei attivato anche un echo delle query.
    Se puoi aiutarmi scrivimi direttamente e ti invio il link.
    Naturalmente sarò felice di offrirti un caffè (anche non virtuale dato che sto a Milano).

  2. Sono così contento per aver trovato questa soluzione al mio problema che se fossi qui ti abbraccerei di cuore. Erano mesi che mi chiedevo come ordinare questi varchar, Grazie.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

w

Connessione a %s...