Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Mysql order by

  1. #1

    Mysql order by

    Ho una tabella con un campo composto da testo e numeri
    Tipo :
    record 1 : rif. 72
    record 2 : rifer. 96
    record3 : rif10
    Il mio problema è che non riesco ad ordinarlo numericamente con una query.

    In php con ereg ("[0-9]+" mi trovo la parte numerica ma come faccio ad ordinarlo in una query per valore numerico ?
    Del tipo
    $result = mysql_query("SELECT * FROM tabellai ORDER BY 'campoalfanumerico' ASC ");

    Chiedo aiuto, non sono riuscito a trovare info specifiche per sta cosa

  2. #2
    La stringa rif. - rifer. - rif come minimo andrebbe normalizzata. Se poi si tratta di un presupposto comune a tutti i record sarebbe molto meglio evitare di mettere questa stringa nel db e utilizzare un campo numerico. La stringa rif. la stampi quando serve con il php.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    E lo so ..
    tanto che nella form di imput ho messo il testo che chiede il rif. E il cliente doveva inserire solo un dato numerico
    Ho sbagliato io a non inserire un controllo e il cliente che ripete il rif nell’ imput.
    Il risultato è che l’ ordinamento non è congruo e che ci sono + di 1000 record inseriti.
    Se non ci sono soluzioni in mysql creo uno script che mi pulisce il record con solo i numeri, però mi sembra strano che mi si posso usare una query, per questo chiedo a voi

  4. #4
    puoi provare ad usare substring_index()

    codice:
    select *
    from tabella
    order by substring_index(campo, ' ' , -1)
    in pratica usando lo spazio come delimitatore prendi la parte a dx. Sempre che il campo non abbia degli spazi in testa/fondo visto che non lo hai controllato. Puoi sempre ripulire gli spazi in eccesso con trim in un update.

    meglio comunque se aggiorni i valori in un campo numerico.... basta una query per farlo:

    codice:
    update tabella
    set campo_num = substring_index(campo, ' ' , -1)

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Ho fatto con :
    substring_index()

    grazie 1000

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 © 2024 vBulletin Solutions, Inc. All rights reserved.