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

Discussione: ordinamento sql o java

  1. #1

    ordinamento sql o java

    ciao
    sto usando sql server 2005 express.
    Vorrei fare una query semplice ma con un ordinamento difficile, del tipo...
    ho un campo nvarchar con dati tipo 26, 236, 248, 84a, 199b ecc..
    non è detto che il primo char sia sempre un numero può essere anche una lettera.

    Dovrei ordinare i record tramite questo campo nel seguente modo:

    26
    84a
    199b
    236
    248

    sarebbe l'ideale farlo direttamente nel db....

    -----------------------------------------------------------------------

    se faccio
    order by inv
    ovviamente ordina utilizzando le regole di ordinamento per stringhe.

    -----------------------------------------------------------------------

    se faccio, ipotizzando per esempio che il campo sia di 4 posizioni.

    SELECT RIGHT(' ' + campo, 4) AS campo_ordine, altri campi
    FROM tabella
    ORDER BY 1 ASC

    ottengo
    26
    236
    248
    84a
    199b

    -----------------------------------------------------------------------

    Se non fosse possibile tramite db, che classe java potrei usare per
    l'ordinamento partendo da un ResultSet?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Java viene trattato nell'apposito sub-forum.

    E sicuramente in SQL non riuscirai ad ottenere l'ordinamento che cerchi, visto che non si tratta né di un ordinamento lessicografico, né di un ordinamento aritmetico puro (ci sono dei caratteri).

    Te lo devi implementare in Java.

    E ti sposto, di conseguenza, nel sub-forum adatto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Ma non ho mica capito qual'è il criterio di ordinamento che vorresti implementare
    Al mio segnale... scatenate l'inferno!

  4. #4
    Ringrazio LeleFT per la conferma che in SQL non si riesce ad ottenere l'ordinamento che cerco.


    Se potete aiutarmi ad implementare in java un ordinamento dei record con un criterio
    (come in windows per le cartelle) che ordini un campo String nel seguente modo:

    26
    84a
    199b
    236
    248
    a12

    In questo momento ho un ResultSet ordinato così:
    26
    236
    248
    84a
    199b
    a12

    Vi ringrazio per l'aiuto.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Beh... prima di tutto dovresti dirci qual è il criterio con cui vengono costruite quelle stringhe.
    Da quello che vedo la stringa è sempre composta in questo modo:
    codice:
    NUMERO
    
    oppure
    
    NUMERO + CARATTERI
    
    oppure
    
    CARATTERI + NUMERO
    
    oppure (ipotizzo)
    
    CARATTERI
    Se è questo il criterio di costruzione delle stringhe, allora possiamo provare a costruire un criterio di ordinamento. Se, invece, il criterio è un altro, prova a spiegarlo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Il criterio di costruzione delle stringhe è come l'hai esposto te, ovvero può essere:

    NUMERO oppure

    NUMERO + CARATTERI oppure

    CARATTERI + NUMERO oppure

    CARATTERI


    Ciao e grazie.

  7. #7
    Volevo sapere se c'è qualcuno che per favore può aiutarmi a risolvere questa richiesta.
    Ciao.

  8. #8
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    ma in base a cosa decidi se una specifica stringa deve venire prima di un'altra nell'oridine?

    prova a mettere giu' delle regole precise, io non ho capito niente con gli esempi...

    una volta definite delle regole di ordinamento precise, non dovrebbe essere difficile implementare il criterio di ordinamento in java.

  9. #9
    Allora mi spiego meglio.

    HO un array di stringhe (nvarchar) che può valere indifferentemente:
    NUMERI oppure
    NUMERI + CARATTERI oppure
    CARATTERI + NUMERI oppure
    CARATTERI

    esempio array di partenza:
    26
    236
    248
    84a
    199b
    a12

    ------------------------------------------------------

    Vorrei ordinare in modo logico questo array, per cui, per esempio,
    l'elemento 199b venga ordinato tra gli elementi 26 e 236.

    Il criterio di ordinamento sarà quindi numerico per confronti numerici ed
    alfabetico per i confronti tra caratteri.

    In definitiva dovrei realizzare un ordinamento come quello che usa windows nelle cartelle
    per la visualizzazione ordinata per nome dei file.

    L'output applicato all'esempio precedente sarà:

    26
    84a
    199b
    236
    248
    a12
    ---------------------------------------------------------------
    Naturalmente non pretendo il codice, ma mi basterebbe sapere, se esiste
    una classe java che implementa questo tipo di sort.


    Ciao e grazie.

  10. #10
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    che io sappia non esiste nulla di gia' pronto.

    la logica implementativa del confronto tra due elementi mi sembra comunque abbastanza semplice:
    - spacchi entrambi gli elementi nelle loro 2 componenti (numeri e caratteri, ognuna delle quali puo' essere nulla)
    - confronti la parte numerica dell'elemento 1 con la parte numerica dell'elemento 2. Solo nel caso in cui le parti numeriche siano uguali (o entrambe nulle), confronti la parte costituita da caratteri.

    Questo dovrebbe essere sufficiente a definire quale dei due elementi viene prima dell'altro... in altre parole: ecco fatto il tuo Comparator.

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.