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.