2013-01-17 5 views
5

Mein Problem ist sehr einfach: Ich habe ein Array von String. Das Sortieren in Java gibt eine Reihenfolge und in Sql Server 2005 eine etwas andere Reihenfolge. Ein Beispiel für den Unterschied, den ich entdeckte, war im Falle von zwei Strings: "jyl; pagespro", "jyl", die Java in dieser Reihenfolge sortiert, und Sql in umgekehrter Reihenfolge. Ich habe versucht, Sql Server-Reihenfolge von ascii (myColumn), aber immer noch ohne Wirkung. Wie kann ich das lösen? .....Get SQL Server 2005 sortieren Varchar-Spalten wie Java tun würde

+1

Haben Sie versucht, die Sortierreihenfolge mit ASC oder DESC für aufsteigend oder absteigend anzugeben? – jpw

+0

JA, natürlich gibt es ASC. Und ich brauche das – Madrugada

+1

Kannst du deine Frage redigieren, um nur zu sagen, in welcher Reihenfolge du welche SQL hast, um deine Daten zu sortieren? Die Art, wie Java es tut, ist für Ihre Frage irrelevant. – JohnFx

Antwort

4

Um auf Davee Antwort zu verlängern, wenn Sie die Sortierung Sie zum Sortieren verwenden möchten bestimmt haben, können Sie den Namen in der ORDER BY-Klausel wie diese verwenden: ORDER BY colA COLLATE SQL_Latin1_General_Cp437_CS_AS_KI_WI.

Bitte beachten Sie, dass dies keinen Index für die Sortierung verwendet, der unter colA definiert werden könnte. Sie könnten das umgehen, indem Sie berechnete Spalten verwenden.

Im Allgemeinen würde ich vorschlagen, alle Sortierung an einem Ort zu tun: entweder in Java oder in der Datenbank, aber nicht manchmal hier und manchmal dort. Dies führt nur zu Verwirrung und Komplexität.

1

Ich würde vermuten, dass es mit dem SQL Server collation in Wirkung zu tun hat. Dies betrifft nicht nur den verfügbaren Zeichensatz, sondern auch, wie die Zeichen gegeneinander sortiert werden. Sogar in der ziemlich generischen SQL_Latin1_General-Familie sind Dutzende von spezifischen Kollationen verfügbar.