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.