SELECT
स्टेटमेंट शायद SQL सर्वर में सबसे अधिक इस्तेमाल किया जाने वाला स्टेटमेंट है। अधिकांश समय यह कथन सारणीबद्ध डेटा की पंक्तियों को पुनः प्राप्त करने के लिए किसी दृश्य के विरुद्ध या सीधे तालिका के विरुद्ध चलाया जाता है।
लेकिन केवल दृश्य और तालिकाएं ही ऐसी वस्तुएं नहीं हैं जिन्हें आप SELECT
चला सकते हैं पर बयान। SELECT
कथन का उपयोग अन्य वस्तुओं पर भी किया जा सकता है जैसे कि रोसेट फ़ंक्शंस, OPENXML, और उपयोगकर्ता-परिभाषित फ़ंक्शंस।
यह आलेख तालिका-मूल्यवान फ़ंक्शन के माध्यम से डेटा का चयन करने का एक उदाहरण प्रदान करता है।
उदाहरण 1 - मूल कार्य
यहां एक त्वरित फ़ंक्शन है जो इनलाइन तालिका-मूल्यवान फ़ंक्शन के माध्यम से तालिका से मूल डेटा का चयन करता है।
चुनें* udf_Cats_ITVF() से;
परिणाम:
+-----------+-----------+---------------+| कैट आईडी | कैटनाम | फोन ||-----------+---------------+---------------|| 1 | गारफील्ड | 9871237654 || 2 | फेलिक्स | 8871237651 || 3 | टॉम | 7871237652 || 4 | फ़ेच | 6871237653 |+------------+----------+---------------+
फ़ंक्शन इस तरह दिखता है:
CREATE FUNCTION dbo.udf_Cats_ITVF() TABLEASRETURN लौटाता है (CateId, CatName, dbo.Cats से फोन चुनें);जाओ
यह फ़ंक्शन केवल तालिका से सभी पंक्तियों का चयन करता है। कोई तर्क की आवश्यकता नहीं है।
यदि आप एक निश्चित बिल्ली का चयन करना चाहते हैं, तो आपको एक WHERE
जोड़ना होगा खंड।
चुनें * udf_Cats_ITVF से () जहां CatName ='Fetch';
परिणाम:
+-----------+-----------+---------------+| कैट आईडी | कैटनाम | फोन ||-----------+---------------+---------------|| 4 | फ़ेच | 6871237653 |+------------+----------+---------------+
अब मुझे स्वीकार करना होगा, यह फ़ंक्शन एक प्रकार का अतिश्योक्तिपूर्ण है, क्योंकि हम सीधे तालिका से डेटा का चयन कर सकते थे। या हम काम करने के लिए एक दृष्टिकोण बना सकते थे। लेकिन उपयोगकर्ता-परिभाषित कार्यों का एक लाभ है कि तालिकाओं और विचारों में नहीं है:पैरामीटर।
उदाहरण 2 - पैरामीटर के साथ फ़ंक्शन
तालिका-मूल्यवान कार्यों के लाभों में से एक यह है कि वे पैरामीटर का समर्थन करते हैं। यह वह जगह है जहाँ फ़ंक्शन थोड़ा अधिक उपयोगी हो जाता है। कुछ लोग टेबल-वैल्यू वाले फ़ंक्शंस को "पैरामीटरीकृत दृश्य" के रूप में संदर्भित करते हैं, क्योंकि वे केवल एक दृश्य की तरह व्यवहार करते हैं, लेकिन पैरामीटर की अनुमति देने की अतिरिक्त कार्यक्षमता के साथ।
इसलिए हम बिल्ली के नाम के तर्क को स्वीकार करने के लिए पिछले फ़ंक्शन की विविधता बना सकते हैं।
चुनें * udf_CatsByName_ITVF से ('Fetch');
परिणाम:
+-----------+-----------+---------------+| कैट आईडी | कैटनाम | फोन ||-----------+---------------+---------------|| 4 | फ़ेच | 6871237653 |+------------+----------+---------------+
नया फ़ंक्शन इस तरह दिखता है:
CREATE FUNCTION dbo.udf_CatsByName_ITVF(@CatName varchar(70) ) TABLEASRETURN लौटाता है (CateId, CatName, dbo से फोन चुनें।उदाहरण 3 - जुड़ता है
तालिका-मूल्यवान कार्यों को जुड़ने में शामिल किया जा सकता है।
यहां, मैं एक तालिका-मूल्यवान फ़ंक्शन से सभी कॉलम का चयन करता हूं जो किसी दिए गए कलाकार द्वारा सभी एल्बम लौटाता है:
चुनें * ufn_AlbumsByArtist(1) से;परिणाम:
+---------------+--------------------------+---------- --+| कलाकार आईडी | एल्बम का नाम | Genre ||---------------+--------------------------+---------- -|| 1 | पॉवरस्लेव | रॉक || 1 | कहीं समय में | रॉक || 1 | मन का टुकड़ा | रॉक || 1 | हत्यारे | रॉक || 1 | मरने के लिए कोई प्रार्थना नहीं | रॉक |+---------------+---------------------------+---------- -+इस फ़ंक्शन के साथ एकमात्र समस्या यह है कि यह कलाकार का नाम वापस नहीं करता है। अगर मुझे कलाकार का नाम चाहिए, तो मुझे उस तालिका के साथ जुड़ना होगा जिसमें वह डेटा है। इस मामले में जिस तालिका में कलाकार का नाम होता है उसे
Artists
. कहा जाता है , इसलिए मैं अपनी क्वेरी को निम्नानुसार संशोधित कर सकता हूं:ar.ArtistName चुनेंपरिणाम:
+--------------+-------------------------------+----- ----+| कलाकार का नाम | एल्बम का नाम | शैली ||--------------+--------------------------+------ ---|| आयरन मेडेन | पॉवरस्लेव | रॉक || आयरन मेडेन | कहीं समय में | रॉक || आयरन मेडेन | मन का टुकड़ा | रॉक || आयरन मेडेन | हत्यारे | रॉक || आयरन मेडेन | मरने के लिए कोई प्रार्थना नहीं | रॉक |+--------------+--------------------------+------ ---+