इसके लिए मैं आपके परिभाषित इनपुट मापदंडों को देखते हुए एक अधिक औपचारिक गतिशील एसक्यूएल समाधान के साथ जाने की कोशिश करूंगा, निम्न जैसा कुछ।
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)
अस्वीकरण: डायनेमिक एसक्यूएल का उपयोग कुछ ऐसा नहीं है जिसे हल्के में लिया जाना चाहिए, और यह सुनिश्चित करने के लिए सभी परिस्थितियों में उचित विचार किया जाना चाहिए कि आप एसक्यूएल इंजेक्शन हमलों के लिए खुले नहीं हैं, हालांकि, कुछ गतिशील खोज प्रकार के संचालन के लिए यह सबसे सुरुचिपूर्ण में से एक है मार्ग।