Sortieren von VARCHAR-Spalten mit numerischen Werten in SQL Server
Wenn es sich um eine VARCHAR-Spalte handelt, die sowohl Zahlen als auch Buchstaben enthalten kann, stellt das Sortieren ein Problem dar Herausforderung, wenn Sie möchten, dass numerische Werte numerisch geordnet werden. Standardmäßig sortiert SQL Server eine solche Spalte alphabetisch, was in diesem Fall nicht wünschenswert ist.
Um das gewünschte Sortierverhalten zu erreichen, besteht eine Lösung darin, numerische Werte mit Zeichen aufzufüllen, um sicherzustellen, dass alle Zeichenfolgen die gleiche Länge haben. Dadurch kann SQL Server die Daten numerisch sortieren.
Hier ist eine Beispielabfrage, die diesen Ansatz demonstriert:
select MyColumn from MyTable order by case IsNumeric(MyColumn) when 1 then Replicate('0', 100 - Len(MyColumn)) + MyColumn else MyColumn end
In dieser Abfrage wird die IsNumeric-Funktion verwendet, um zu bestimmen, ob ein Wert numerisch ist . Wenn dies der Fall ist, fügt die Funktion „Replizieren“ führende Nullen hinzu, um die Zeichenfolge auf eine feste Länge aufzufüllen (in diesem Beispiel 100). Andernfalls bleibt der Wert unverändert.
Durch die Sortierung nach diesem Ausdruck werden numerische Werte aufgefüllt und numerisch sortiert, während nicht numerische Werte alphabetisch sortiert werden. Dadurch wird die gewünschte Sortierreihenfolge sichergestellt, wie im Beispiel in der ursprünglichen Frage gezeigt:
1 2 10 A B B1
Das obige ist der detaillierte Inhalt vonWie sortiere ich VARCHAR-Spalten mit gemischten numerischen und alphabetischen Werten numerisch in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!