Іноді у вас просто немає вибору щодо необхідності зберігати номери, змішані з текстом. В одному з наших додатків хост веб-сайту, який ми використовуємо для нашого сайту електронної комерції, робить фільтри динамічно поза списками. Немає можливості сортувати за будь-яким полем, крім відображеного тексту. Коли ми хотіли, щоб фільтри складалися зі списку, який містив такі речі, як 2 "до 8" 9 "до 12" 13 "до 15" тощо, нам потрібен був для сортування 2-9-13, а не 13-2-9, як це буде, коли читання числових значень. Тож я використав функцію реплікації SQL Server разом із довжиною найдовшого числа для заповнення будь-яких коротших чисел пробілом. Тепер 20 сортується після 3 тощо.
Я працював із поданням, яке дало мені мінімальну та максимальну довжину, ширину тощо для типу елемента та класу, і ось приклад того, як я робив текст. (LB n Low і LB n High - це нижній і високий кінці дужок 5 довжини.)
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