WHERE 句を使用して、返される結果を絞り込むことができます。例えば:
SELECT Col1
,Col2
...
,Coln
FROM SourceTable
WHERE Col1>'A1' AND Col1<'A15'
この値 ('A1' および 'A15') をユーザー定義関数の入力パラメーターとして使用できます。そうすれば、'B1' と 'B15' またはそれらの代わりに他のすべてを渡すのが非常に簡単になります。
また、「A2」の後に「A10」を表示したい場合は
ユーザー定義関数の詳細について -ユーザー定義関数
T-SQL での文字列圧縮については、この情報を確認してください。また、衝突にも時間を費やす必要があります-大文字と小文字を区別する文字列と大文字と小文字を区別しない文字列を比較しています。
「もう1つは、結果を正しくソートしたいということです(つまり、A2の後のA10)」に関しては、次のように関数にロジックを追加できます。
DECLARE @ParamOne NVARCHAR(2)='A2'
DECLARE @ParamTwo NVARCHAR(3)='A10'
SELECT CASE WHEN LEN(@ParamOne)=2
THEN CASE WHEN @ParamTwo<STUFF(@ParamOne,2,0,'0')
THEN 1
ELSE 2
END
ELSE
CASE WHEN @ParamTwo<@ParamOne
THEN 1
ELSE 2
END
END