このために、定義された入力パラメーターを考慮して、次のようなより正式な動的 SQL ソリューションを使用しようとします
DECLARE @SQL VARCHAR(MAX)
SET @SQL = '
SELECT
FROM
database.dbo.table T
WHERE
T.deleted = ''n'' '
--Do your conditional stuff here
IF @searchf1 <> '' THEN
SET @SQL = @SQL + ' AND fieldf1 = ' + @searchf1 + ' AND fieldr1 = ' + @searchr1 + ''' '
--Finish the query
SET @SQL = @SQL + ' ORDER BY xxx'
EXEC(@SQL)
免責事項: 動的 SQL の使用は軽視すべきものではありません。SQL インジェクション攻撃を受けないようにするために、あらゆる状況で適切な考慮が必要ですが、一部の動的検索タイプの操作では、動的 SQL は最も洗練されたものの 1 つです。