Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    ordinamento stringhe miste

    Salve a tutti,
    dovrei ottenere i dati da una select ordinati,
    tali dati sono tutti del tipo:
    WW2
    WW5
    WW1
    WW3
    WW10
    ecc..

    quindi con prefisso testuale WW e suffisso numerico.

    Come faccio ad ordinarli con suffisso decrescente??

  2. #2
    per select intendi una query?

    se si

    SELECT tuo_campo FROM tua_tabella ORDER BY tuo_campo DESC
    http://www.mcganass.com

  3. #3
    troppo semplice èhh!

    così otterrei che WW1 > WW10

    mi serve qualche funzione in grado di estrarre solo
    la parte numerica ed ordinarla.

  4. #4
    mi serve qualche funzione in grado di estrarre solo
    prima fai la select, eppoi ai risultati, che sono gia' ordinati come vuoi ci levi il www con : http://it.php.net/manual/it/function.substr.php
    http://www.mcganass.com

  5. #5
    ok,
    ma il problema è che non vengono ordinate correttamente
    cioè

    WW9
    WW8
    WW1
    WW10
    WW14

    questo è l'ordinamento decrescente che ottengo con un semplice
    ORDER BY nome_campo DESC

    invece a me serve:

    WW14
    WW10
    WW9
    ...

    ok??

  6. #6
    ti vengono ordinate giuste invece

    non dimenticare che per quanto potente performante e di ultima generazione il pc resta sempre un pc e capisce solo 0 e 1

    per cui per lui

    10 viene prima di 1

    non c'e' ne'...puoi risolvere la cosa a monte e prima di inserire il valore WWW1 nel db, manipolare la stringa e inserire WWW01
    http://www.mcganass.com

  7. #7
    Ti posso garantire che è come ho detto in precedenza,
    prova a creare una tab, inserire valori misti e chiedi l'ordinamento vedrai che accade ciò che ti ho detto.

    Comunque ho risolto in questo modo:

    codice:
    SELECT nome FROM tab ORDER BY CAST( SUBSTRING( nome, 4 ) AS UNSIGNED ) DESC
    Grazie lo stesso.

  8. #8
    Originariamente inviato da TommyGun
    Ti posso garantire che è come ho detto in precedenza,
    prova a creare una tab, inserire valori misti e chiedi l'ordinamento vedrai che accade ciò che ti ho detto.
    si si ma l'ordinamento che ti dava era corretto! perché ordinava tenendo conto che il campo è una stringa, e viene trattato da tale, dove 10 è minore di di 2

    Originariamente inviato da TommyGun
    Comunque ho risolto in questo modo:

    codice:
    SELECT nome FROM tab ORDER BY CAST( SUBSTRING( nome, 4 ) AS UNSIGNED ) DESC
    Grazie lo stesso.
    bravo che hai trovato la soluzione da solo, sicuramente la terrai a mente







    p.s. hai notato tu stesso che per ottenere l'ordinamento che volevi hai dovuto convertire il dato in un INTEGER...
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.