Dafür würde ich versuchen, eine formellere dynamische SQL-Lösung zu verwenden, etwa die folgende, wenn Sie Ihre definierten Eingabeparameter angeben
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)
HAFTUNGSAUSSCHLUSS: Die Verwendung von dynamischem SQL sollte NICHT auf die leichte Schulter genommen werden, und es sollte unter ALLEN Umständen angemessen berücksichtigt werden, um sicherzustellen, dass Sie nicht für SQL-Injection-Angriffe anfällig sind. Für einige dynamische Suchvorgänge ist dies jedoch eine der elegantesten Strecke.