Terkadang Anda tidak punya pilihan untuk menyimpan nomor yang dicampur dengan teks. Di salah satu aplikasi kami, host situs web yang kami gunakan untuk situs e-niaga membuat filter dari daftar secara dinamis. Tidak ada opsi untuk mengurutkan berdasarkan bidang apa pun kecuali teks yang ditampilkan. Saat kami ingin filter dibuat dari daftar yang mengatakan hal-hal seperti 2 "hingga 8" 9 "hingga 12" 13 "hingga 15" dll, kami memerlukannya untuk mengurutkan 2-9-13, bukan 13-2-9 seperti yang akan terjadi saat membaca nilai numerik. Jadi saya menggunakan fungsi Replikasi SQL Server bersama dengan panjang nomor terpanjang untuk mengisi nomor yang lebih pendek dengan spasi di depan. Sekarang 20 diurutkan setelah 3, dan seterusnya.
Saya bekerja dengan tampilan yang memberi saya panjang minimum dan maksimum, lebar, dll. Untuk jenis dan kelas item, dan berikut adalah contoh cara saya membuat teks. (LB n Rendah dan LB n Tinggi adalah ujung Rendah dan Tinggi dari 5 kurung panjang.)
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