Para esto, intentaría ir con una solución Dynamic SQL más formal, algo como lo siguiente, dados sus parámetros de entrada definidos
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)
DESCARGO DE RESPONSABILIDAD: El uso de Dynamic SQL NO es algo que deba tomarse a la ligera, y se debe tener la debida consideración en TODAS las circunstancias para garantizar que no esté expuesto a ataques de inyección de SQL; sin embargo, para algunas operaciones de tipo de búsqueda dinámica es uno de los más elegantes. ruta.