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