खोज…


एक सेल से गतिशील रूप से उत्पन्न पंक्तियों के साथ तालिका पंक्तियों में शामिल हों

CROSS APPLY आपको तालिका से गतिशील रूप से उत्पन्न पंक्तियों के साथ तालिका से "ज्वाइन" करने में सक्षम बनाता है, जो कुछ तालिका-मान फ़ंक्शन द्वारा लौटाया जाता है।

कल्पना करें कि आपके पास एक स्तंभ के साथ एक कंपनी तालिका है जिसमें उत्पादों की एक सरणी (ProductList स्तंभ) है, और एक फ़ंक्शन है जो इन मूल्यों को पार्स करता है और उत्पादों का एक सेट लौटाता है। आप किसी कंपनी तालिका से सभी पंक्तियों का चयन कर सकते हैं, इस फ़ंक्शन को एक ProductList कॉलम पर लागू कर सकते हैं और मूल कंपनी पंक्ति के साथ "उत्पन्न" परिणाम प्राप्त कर सकते हैं:

SELECT *
FROM Companies c 
     CROSS APPLY dbo.GetProductList( c.ProductList ) p

प्रत्येक पंक्ति के लिए, ProductList सेल का मान फंक्शन को प्रदान किया जाएगा, और फ़ंक्शन उन उत्पादों को उन पंक्तियों के सेट के रूप में लौटाएगा, जिन्हें मूल पंक्ति के साथ जोड़ा जा सकता है।

सेल में संग्रहीत JSON सरणी के साथ तालिका पंक्तियों में शामिल हों

CROSS APPLY आपको स्तंभ में संग्रहीत JSON ऑब्जेक्ट्स के संग्रह के साथ एक तालिका से पंक्तियों को "जुड़ने" के लिए सक्षम बनाता है।

कल्पना करें कि आपके पास एक स्तंभ के साथ एक कंपनी तालिका है जिसमें JSON सरणी के रूप में स्वरूपित उत्पादों (ProductList स्तंभ) की एक सरणी है। OPENJSON टेबल वैल्यू फ़ंक्शन इन मानों को पार्स कर सकता है और उत्पादों का सेट लौटा सकता है। आप कंपनी तालिका से सभी पंक्तियों का चयन कर सकते हैं, OPSONJSON के साथ JSON उत्पादों को पार्स कर सकते हैं और मूल कंपनी पंक्ति के साथ "उत्पन्न परिणाम" जोड़ सकते हैं:

SELECT *
FROM Companies c 
     CROSS APPLY OPENJSON( c.ProductList )
                 WITH ( Id int, Title nvarchar(30), Price money)

प्रत्येक पंक्ति के लिए, ProductList सेल का मान OPENJSON फ़ंक्शन को प्रदान किया जाएगा, जो JSON ऑब्जेक्ट्स को पंक्तियों में मौजूद स्कीमा के साथ पंक्तियों में बदल देगा।

सरणी मान द्वारा पंक्तियों को फ़िल्टर करें

यदि आप पंक्ति में टैग की सूची को कोमा से अलग मान के रूप में संग्रहीत करते हैं, तो STRING_SPLIT फ़ंक्शन आपको टैग की सूची को मूल्यों की तालिका में बदलने में सक्षम बनाता है। CROSS APPLY आपको पेरेंट रो के साथ STRING_SPLIT फ़ंक्शन द्वारा पार्स किए गए मानों को "जुड़ने" के लिए सक्षम बनाता है।

कल्पना करें कि आपके पास एक स्तंभ के साथ एक उत्पाद तालिका है जिसमें अल्पविराम से अलग किए गए टैगों की एक सरणी है (जैसे प्रोमो, बिक्री, नया)। STRING_SPLIT और CROSS APPLY आपको उनके टैग के साथ उत्पाद पंक्तियों में शामिल होने में सक्षम बनाते हैं ताकि आप टैग द्वारा उत्पादों को फ़िल्टर कर सकें:

SELECT *
FROM Products p 
     CROSS APPLY STRING_SPLIT( p.Tags, ',' ) tags
WHERE tags.value = 'promo'

प्रत्येक पंक्ति के लिए, टैग सेल का मान STRING_SPLIT फ़ंक्शन को प्रदान किया जाएगा जो टैग मान लौटाएगा। फिर आप इन मानों द्वारा पंक्तियों को फ़िल्टर कर सकते हैं।

नोट: STRING_SPLIT फ़ंक्शन SQL सर्वर 2016 से पहले उपलब्ध नहीं है



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow