För detta skulle jag försöka gå med en mer formell Dynamic SQL-lösning, något i stil med följande, givet dina definierade indataparametrar
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)
ANSVARSFRISKRIVNING: Användningen av Dynamic SQL är INTE något som bör tas lätt på, och korrekt hänsyn bör tas under ALLA omständigheter för att säkerställa att du inte är öppen för SQL-injektionsattacker, men för vissa dynamiska sökoperationer är det en av de mest eleganta rutt.