Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Order By ne fonctionne pas correctement

Vous les stockez sous forme de texte (nvarchar ), c'est pourquoi vous obtenez ordre lexographique . Cela signifie que chaque caractère est comparé les uns aux autres de gauche à droite. D'où 4000 est "supérieur" à 30000 (le dernier zéro n'a pas d'importance puisque le premier 4 est déjà supérieur au 3).

Donc, la bonne façon est de le stocker sous forme de valeur numérique. Cependant, cela semble impossible puisque vous utilisez également des valeurs comme 16.000 with 4.1/2"DP . Ensuite, j'ajouterais une autre colonne, une pour la valeur numérique que vous souhaitez ordonner et l'autre pour la représentation textuelle.