A volte non si ha semplicemente la possibilità di memorizzare numeri mescolati con il testo. In una delle nostre applicazioni, l'host del sito Web che utilizziamo per il nostro sito di e-commerce rende i filtri dinamicamente fuori dagli elenchi. Non esiste alcuna opzione per ordinare in base a qualsiasi campo ma il testo visualizzato.Quando abbiamo deciso filtri costruita fuori una lista che ha detto le cose come 2" a 8" 9" a 12" 13" a 15" , ecc, abbiamo avuto bisogno di ordinare 2-9-13, non 13-2-9 come lo farà quando leggerà i valori numerici. Quindi ho usato la funzione di replica di SQL Server insieme alla lunghezza del numero più lungo per riempire eventuali numeri più brevi con uno spazio iniziale. Ora 20 è ordinato dopo il 3 e così via.
stavo lavorando con una vista che mi ha dato la lunghezza minima e massima, larghezza, ecc per il tipo di elemento e di classe, e qui è un esempio di come ho fatto il testo. (LB n Low e LB n alto sono il limite inferiore e superiore delle staffe 5 di lunghezza.)
REPLICATE(' ', LEN(LB5Low) - LEN(LB1High)) + CONVERT(NVARCHAR(4), LB1High) + '" and Under' AS L1Text,
REPLICATE(' ', LEN(LB5Low) - LEN(LB2Low)) + CONVERT(NVARCHAR(4), LB2Low) + '" to ' + CONVERT(NVARCHAR(4), LB2High) + '"' AS L2Text,
REPLICATE(' ', LEN(LB5Low) - LEN(LB3Low)) + CONVERT(NVARCHAR(4), LB3Low) + '" to ' + CONVERT(NVARCHAR(4), LB3High) + '"' AS L3Text,
REPLICATE(' ', LEN(LB5Low) - LEN(LB4Low)) + CONVERT(NVARCHAR(4), LB4Low) + '" to ' + CONVERT(NVARCHAR(4), LB4High) + '"' AS L4Text,
CONVERT(NVARCHAR(4), LB5Low) + '" and Over' AS L5Text
fonte
2017-08-23 21:24:06
La colonna è di tipo varchar a causa del quale si trovano ad affrontare questo comportamento. – Meherzad
qual è il tipo di dati di registration_no column? –
Usa 'order by registration_no + 0 asc' per risolvere il tuo problema. – Meherzad