Manchmal haben Sie einfach keine Wahl, Zahlen mit Text gemischt zu speichern. In einer unserer Anwendungen macht der Website-Host, den wir für unsere E-Commerce-Website verwenden, Filter dynamisch aus Listen. Es gibt keine Möglichkeit, nach einem anderen Feld als dem angezeigten Text zu sortieren. Wenn wir Filter wollten, die aus einer Liste erstellt wurden, die Dinge wie 2 "bis 8" 9 "bis 12" 13 "bis 15" usw. enthielt, brauchten wir sie, um 2-9-13 zu sortieren, nicht 13-2-9, wie es sein wird, wenn Lesen der numerischen Werte. Daher habe ich die SQL Server-Replikationsfunktion zusammen mit der Länge der längsten Nummer verwendet, um kürzere Nummern mit einem führenden Leerzeichen aufzufüllen. Jetzt werden 20 nach 3 sortiert und so weiter.
Ich habe mit einer Ansicht gearbeitet, die mir die minimalen und maximalen Längen, Breiten usw. für den Elementtyp und die Klasse angibt. Hier ist ein Beispiel dafür, wie ich den Text erstellt habe. (LB n Low und LB n High sind das Low- und High-Ende der 5 Längenklammern.)
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