Za tímto účelem bych se pokusil jít s formálnějším řešením Dynamic SQL, něco jako je následující, vzhledem k vašim definovaným vstupním parametrům
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)
ODPOVĚDNOST: Použití dynamického SQL NENÍ něco, co by se mělo brát na lehkou váhu, a za KAŽDÝCH okolností by se mělo řádně zvážit, abyste se ujistili, že nejste otevření útokům SQL injection, nicméně pro některé operace typu dynamického vyhledávání je to jedna z nejelegantnějších trasa.