Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: Order by complesso

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    17

    Order by complesso

    Salve, ho una tabella dove è presente un campo stringa del tipo "ab-234" (due lettere un trattino tre numeri).
    Dovrei estrarre dei record dalla tabella e ordinarli in ordine decrescente con la parte numerica del campo citato.
    La parte numerica della stringa la posso estrarre e renderla un numero intero nel seguente modo: $num=intval(substr(codice, 3))

    Ho provato ad inserire nella select la seguente condizione "order by (intval(substr(codice, 3))) desc" ma non funziona.

    Come potrei risolvere?

  2. #2
    che vuol dire "non funziona"?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    17
    Se eseguo la select ottengo il seguente errore: "Errore nella query: FUNCTION db1.intval does not exist"

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333

    Re: Order by complesso

    Originariamente inviato da mdicicco
    $num=intval(substr(codice, 3))
    Senza entrare nel dettaglio della sintassi che non conosco bene
    (Mi sembra che si tratta di MySql + PHP )

    Direi che per il Substring devi definire
    -- Il punto di inizio
    -- Quanto è lunga
    Quindi solamente il "3" non ti basta

    .

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    17
    Il problema non è la sintassi di (intval(substr(codice, 3))). Questa è corretta, infatti (intval(substr(ab-234, 3))) mi da il numero intero 234.

    Penso che il problema sia nella sintassi della select.
    L'errore che ottengo è "Errore nella query: FUNCTION db1.intval does not exist" , dove db1 è il nome del database.

  6. #6
    se fai

    SELECT intval(substr(codice, 3)) FROM tabella

    ti restituisce qualcosa? o ti dà comunque errore?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    17
    ho provato la seguente select:
    SELECT intval(substr(codice, 3)) FROM db1.immobili where agenzia='pippo'

    ottengo sempre lo stesso errore: " Errore nella query: FUNCTION db1.intval does not exist"

  8. #8
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,522
    intval è una funzione di php, mysql ovviamente non la conosce
    se vuoi convertire una stringa in integer devi usare convert

    esempio simile al tuo

    SELECT stuff
    FROM table
    WHERE conditions
    ORDER BY CONVERT(SUBSTRING(name_column, 6), SIGNED INTEGER);

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    17
    è corretto, grazie

  10. #10
    ma cosa sarebbe allora INTVAL?

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.