Pour cela, j'essaierais d'utiliser une solution Dynamic SQL plus formelle, quelque chose comme ce qui suit, compte tenu de vos paramètres d'entrée définis
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)
AVIS DE NON-RESPONSABILITÉ : L'utilisation de Dynamic SQL n'est PAS quelque chose qui doit être prise à la légère, et une attention particulière doit être prise dans TOUTES les circonstances pour s'assurer que vous n'êtes pas ouvert aux attaques par injection SQL, cependant, pour certaines opérations de type recherche dynamique, c'est l'une des plus élégantes itinéraire.