Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Ordem SQL Por não funcionar corretamente


Você os está armazenando como texto(nvarchar ), é por isso que você obtém ordem lexográfica . Isso significa que cada caractere é comparado entre si da esquerda para a direita. Portanto, 4000 é "maior" que 30000 (o último zero não importa, pois o primeiro 4 já é maior que o 3).

Portanto, a maneira correta é armazená-lo como um valor numérico. No entanto, isso parece ser impossível, pois você também usa valores como 16.000 with 4.1/2"DP . Então eu adicionaria outra coluna, uma para o valor numérico pelo qual você deseja ordenar e a outra para a representação textual.