Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

नेस्टेड अगर SQL सर्वर संग्रहीत कार्यविधि में कथन का चयन करें

इसके लिए मैं आपके परिभाषित इनपुट मापदंडों को देखते हुए एक अधिक औपचारिक गतिशील एसक्यूएल समाधान के साथ जाने की कोशिश करूंगा, निम्न जैसा कुछ।

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)

अस्वीकरण: डायनेमिक एसक्यूएल का उपयोग कुछ ऐसा नहीं है जिसे हल्के में लिया जाना चाहिए, और यह सुनिश्चित करने के लिए सभी परिस्थितियों में उचित विचार किया जाना चाहिए कि आप एसक्यूएल इंजेक्शन हमलों के लिए खुले नहीं हैं, हालांकि, कुछ गतिशील खोज प्रकार के संचालन के लिए यह सबसे सुरुचिपूर्ण में से एक है मार्ग।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लेन-देन लॉग अक्षम करें

  2. एसक्यूएल सर्वर 2005 एक्सएमएल डेटा प्रकार में सीडीएटीए को INSERT पर हटा दिया गया है

  3. डेटाबेस सीमाओं के पार SQL सर्वर विदेशी कुंजी - प्रवर्तन के लिए तकनीक

  4. एसक्यूएल कई शर्तों का चयन करें कई से कई रिश्ते

  5. डेटाबेस का चयन करें जिसमें केवल विशिष्ट तालिका हो