Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Order By funktioniert nicht richtig

Sie speichern sie als Text(nvarchar ), deshalb erhalten Sie lexografische Ordnung . Das heißt, jedes Zeichen wird von links nach rechts miteinander verglichen. Daher 4000 ist "höher" als 30000 (Die letzte Null spielt keine Rolle, da die erste 4 bereits höher ist als die 3).

Der richtige Weg ist also, ihn als numerischen Wert zu speichern. Dies scheint jedoch unmöglich zu sein, da Sie auch Werte wie 16.000 with 4.1/2"DP verwenden . Dann würde ich eine weitere Spalte hinzufügen, eine für den numerischen Wert, nach dem Sie sortieren möchten, und die andere für die Textdarstellung.