4 Stimmen

Ordnungsgemäße Sortierung von punktierten Zahlen, die als Zeichen in SQL Server gespeichert sind

Ich habe eine SQL-Tabelle, die eine benutzerdefinierte Positionsnummer speichert. Jede dieser Nummern kann eine untergeordnete Nummer haben, die mit einem Trennzeichen von . . Jeder von ihnen kann auch ein Kind haben.

Ein Beispiel dafür, wie es aussehen könnte (wiederum dynamisch, ich weiß nicht, wie es aussehen wird):

Item Number
1
1.1
1.1.1
1.1.1.1
1.1.1.1.a
1.1.1.1.b
10
11
2.1
2.10
2.2
2.20
20
3
30

Das Schwierige daran ist, dass diese Zahlen spontan und nicht unbedingt in der richtigen Reihenfolge erstellt werden. Sie können 5 Zahlen erstellen (1, 2, 3, 4, 5) und dann ein Kind von 1 erstellen, so dass es nicht in der Reihenfolge in der Datenbank gespeichert wird.

Wie wähle ich aus der Tabelle aus und ordne nach dem Item Number so dass es richtig angezeigt wird, wie oben, wenn die Daten nicht in dieser Reihenfolge gespeichert sind?

Die meisten Lösungen, die ich ausprobiert habe, geben mir entweder 1, 2, 3, 4, 5...1.1, 1.2 OR 1, 1.1, 1.1.1, 10, 11...2, 2.1, 20....3, 30, etc .

0voto

Saroop Trivedi Punkte 2225

Versuchen Sie, diese Abfrage in Reihenfolge nach Ort es in meinem Fall funktioniert. Ich habe die gleiche Version Format Wert in varchar(max) Spalte

order by CAST (Substring( ItemNumberToParse, 1, CharIndex( '.', ItemNumberToParse ) - 1)as int)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X