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

कॉलम नाम के लिए एक पैरामीटर का उपयोग करके ऑर्डर करें

आपको कुछ ऐसा करने में सक्षम होना चाहिए:

SELECT *
FROM
    TableName
WHERE
    (Forename LIKE '%' + @SearchValue + '%') OR
    (Surname LIKE '%' + @SearchValue + '%') OR
    (@SearchValue = 'ALL')
ORDER BY 
    CASE @OrderByColumn
    WHEN 1 THEN Forename
    WHEN 2 THEN Surname
    END;
  • @OrderByColumn को 1 असाइन करें Forename . पर छाँटने के लिए ।
  • Surname पर क्रमित करने के लिए 2 असाइन करें ।
  • आदि... आप इस योजना को कॉलम की मनमानी संख्या तक बढ़ा सकते हैं।

हालांकि प्रदर्शन को लेकर सावधान रहें। इस प्रकार के निर्माण इष्टतम निष्पादन योजना को खोजने के लिए क्वेरी ऑप्टिमाइज़र की क्षमता में हस्तक्षेप कर सकते हैं। उदाहरण के लिए, भले ही Forename इंडेक्स द्वारा कवर किया गया है, क्वेरी को अभी भी इंडेक्स को क्रम में ट्रैवर्स करने के बजाय पूर्ण सॉर्ट की आवश्यकता हो सकती है।

यदि ऐसा है, और आप प्रदर्शन के प्रभावों के साथ नहीं रह सकते हैं, तो प्रत्येक संभावित क्रम के लिए क्वेरी का एक अलग संस्करण होना आवश्यक हो सकता है, जो क्लाइंट-साइड को काफी जटिल बनाता है।



  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. SQL सर्वर (T-SQL) में डेटाबेस मेल प्रोफ़ाइल के लिए msdb उपयोगकर्ता पहुँच प्रदान करें

  3. SQL सर्वर त्रुटि 109:INSERT कथन में VALUES खंड में निर्दिष्ट मानों की तुलना में अधिक स्तंभ हैं

  4. SQL सर्वर (T-SQL उदाहरण) में लिंक किए गए सर्वर से कॉलम जानकारी लौटाएं

  5. SQL में न्यूनतम दो मान प्राप्त करना