Czasami po prostu nie masz wyboru, czy musisz przechowywać liczby zmieszane z tekstem. W jednej z naszych aplikacji host witryny internetowej, którego używamy w naszej witrynie handlu elektronicznego, dynamicznie usuwa filtry z list. Nie ma opcji sortowania według dowolnego pola poza wyświetlanym tekstem. Kiedy chcieliśmy, aby filtry składały się z listy zawierającej takie rzeczy jak od 2 "do 8" 9 "do 12" 13 "do 15" itd., Potrzebowaliśmy sortowania 2-9-13, a nie 13-2-9, jak będzie to miało miejsce w przypadku odczyt wartości liczbowych. Więc użyłem funkcji SQL Server Replicate wraz z długością najdłuższej liczby, aby dopełnić mniejsze liczby spacją wiodącą. Teraz 20 jest sortowane po 3 i tak dalej.
Pracowałem z widokiem, który podał mi minimalne i maksymalne długości, szerokości itp. Dla typu i klasy przedmiotu, a oto przykład tego, jak zrobiłem tekst. (LB n Low i LB n High to dolny i górny koniec 5 nawiasów długości.)
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