2013-01-17 15 views
5

Il mio problema è molto semplice: ho una matrice di String. L'ordinamento in Java fornisce un ordine e in Sql Server 2005 un ordine leggermente diverso. Un esempio di differenza che ho notato è stato nel caso di due stringhe: "jyl; pagespro", "jyl", che Java ordina in questo ordine e Sql nell'ordine inverso. Ho provato a rendere l'ordine di SQL Server da ASCII (myColumn) ma ancora senza alcun effetto. Come posso risolvere questo .....Ottieni colonne varchar di SQL Server 2005 come farebbe Java

+1

Avete provato a specificare l'ordinamento con ASC o DESC per ascendente o discendente? – jpw

+0

SÌ certo, ci sono ASC. E ho bisogno di quello – Madrugada

+1

Puoi modificare la tua domanda per dire semplicemente quale ordine sei in che tipo di SQL ordinare i tuoi dati? Il modo in cui Java fa è irrilevante per la tua domanda. – JohnFx

risposta

4

Per estendere la risposta di DaveE, se è stato determinato il confronto che si desidera utilizzare per l'ordinamento, è possibile utilizzare il suo nome nella clausola ORDER BY come questo: ORDER BY colA COLLATE SQL_Latin1_General_Cp437_CS_AS_KI_WI.

Si prega di notare che questo non userebbe un indice per l'ordinamento che potrebbe essere definito su colA. Potresti andare in giro usando le colonne calcolate.

In generale, suggerirei di eseguire tutti gli ordinamenti in un unico punto: in Java o nel database, ma non a volte qui ea volte lì. Questo porta solo alla confusione e alla complessità.

1

Sospetto che abbia a che fare con SQL Server collation in effetti. Ciò influisce non solo sul set di caratteri disponibile, ma anche sul modo in cui i personaggi si confrontano l'uno con l'altro. Anche nella famiglia SQL_Latin1_General abbastanza generica, sono disponibili dozzine di regole di confronto specifiche.

Problemi correlati