[C#\MSSQL2005] Ordinamento Campo

giovedì 03 gennaio 2008 - 03.16

Domin Profilo | Newbie

Ciao,

Ho un problema sull'ordinamento di alcuni campi, e non riesco a risolvere in nessun modo...

Ho un campo di testo di nome NUMERO in un database MSSQL 2005 Express, e devo riportare i campi in un datagrid, ordindoli in base a questo campo.

Il problema è che essendo di testo se io ho i numeri:

1
2
14
23

Vengono ordinati:
1
14
2
23


La soluzione logica sarebbe impostare il campo NUMERO come integer, ma putroppo non posso farlo perchè il campo NUMERO pèotrà contenere anche valori di questo tipo:

1
2
3\A
3\B
14
....


Qualche idea su come potrei ordinare?



L'unica soluzione a cui avevo pensato era quella di creare due campi divisi in cui andare ad inserire in uno il numero da cui poi andrei a fare l'ordinamento, mentre nell'altro un campo di testo in cui inserire i caaraatteri...

Putroppo però dovrei riscrivere diversi pezzi del programma se fosse l'unica soluzione....

Cteniza Profilo | Guru

Una cosa del genere.
select codice, descrizione from tableprova order by space(20 - len(codice)) + codice

Domin Profilo | Newbie

Non ho ben chiarto come, ma funziona


Cmq da quanto ho capito leggendo un pò il significato di space, l'importante è che il numero, in questo caso 20 sia maggiore della lunghezza massima del campo di testo, giusto?

Cteniza Profilo | Guru

>Non ho ben chiarto come, ma funziona
>Cmq da quanto ho capito leggendo un pò il significato di space,
>l'importante è che il numero, in questo caso 20 sia maggiore
>della lunghezza massima del campo di testo, giusto?
Esatto, credo che 20 caratteri per un codice sia sufficiente, comunque puoi aumentarla a tua discrezione

Domin Profilo | Newbie

Ciao,


Purtroppo ho un'altro problema


Se dovvessi ordinare dei dati in questo formato:

1\1
1\2
1\3
1\34
1\34a
1\34b
1\36


Per farlo ho utilizzato questo:

ORDER BY SPACE(15-LEN(SUBSTRING(numero, 3, len(numero)-2))) + numero

Però il risultatyo che mi da è questo:

1\1
1\2
1\3
1\34
1\36
1\34a
1\34b


In pratica i numeri che hanno una lettera finale mi vengono messi alla fine...

Come posso risolvere?


Cteniza Profilo | Guru

Questa cosa la puoi risolvere "lato client" estraendo i dati su una tua tabella da aggiornare.

FedericoC Profilo | Junior Member

Ho provato ad utilizzare questo codice ma non funziona...


A differenza di del post iniziale io utilizzo le / anzichè le \ ma non mi sembra che sia questo il problema...


Ma me inserisce in cima alla lista i numeri che hanno / e dopo quelli senza, anche se in effetti sono ordinati (ma secondo due gruppi distinti e non uno)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5