खोज…


क्वेरी में JSON से मान का उपयोग करना

JSON_VALUE फ़ंक्शन आपको दूसरे तर्क के रूप में निर्दिष्ट पथ पर JSON पाठ से डेटा लेने में सक्षम बनाता है, और इस मूल्य का उपयोग चयन क्वेरी के किसी भी भाग में करता है:

select ProductID, Name, Color, Size, Price, JSON_VALUE(Data, '$.Type') as Type
from Product
where JSON_VALUE(Data, '$.Type') = 'part'

रिपोर्ट में JSON मूल्यों का उपयोग करना

एक बार JSON टेक्स्ट से JSON मान निकाले जाने के बाद, आप उन्हें क्वेरी के किसी भी भाग को इनाया का उपयोग कर सकते हैं। आप समूहीकरण समूह आदि के साथ JSON डेटा पर किसी प्रकार की रिपोर्ट बना सकते हैं:

select JSON_VALUE(Data, '$.Type') as type,
        AVG( cast(JSON_VALUE(Data, '$.ManufacturingCost') as float) ) as cost
from Product
group by JSON_VALUE(Data, '$.Type') 
having JSON_VALUE(Data, '$.Type') is not null

क्वेरी परिणामों से खराब JSON टेक्स्ट को फ़िल्टर करें

यदि कुछ JSON पाठ ठीक से स्वरूपित नहीं किया जा सकता है, तो आप ISJSON फ़ंक्शन का उपयोग करके उन प्रविष्टियों को क्वेरी से निकाल सकते हैं।

select ProductID, Name, Color, Size, Price, JSON_VALUE(Data, '$.Type') as Type
from Product
where JSON_VALUE(Data, '$.Type') = 'part'
and ISJSON(Data) > 0

JSON कॉलम में अपडेट मूल्य

JSON_MODIFY फ़ंक्शन का उपयोग किसी पथ पर मान अपडेट करने के लिए किया जा सकता है। आप इस फ़ंक्शन का उपयोग UPDATE स्टेटमेंट में JSON सेल के मूल मान को संशोधित करने के लिए कर सकते हैं:

update Product
set Data = JSON_MODIFY(Data, '$.Price', 24.99)
where ProductID = 17;

JSON_MODIFY फ़ंक्शन मूल्य कुंजी को अपडेट करेगा या बनाएगा (यदि यह मौजूद नहीं है)। यदि नया मान NULL है, तो कुंजी हटा दी जाएगी। JSON_MODIFY फ़ंक्शन नए मान को स्ट्रिंग के रूप में मानेगा (विशेष वर्णों से बचें, उचित JSON स्ट्रिंग बनाने के लिए इसे दोहरे उद्धरणों के साथ लपेटें)। यदि आपका नया मान JSON टुकड़ा है, तो आपको इसे JSON_QUERY फ़ंक्शन के साथ लपेटना चाहिए:

update Product
set Data = JSON_MODIFY(Data, '$.tags', JSON_QUERY('["promo","new"]'))
where ProductID = 17;

दूसरे पैरामीटर के बिना JSON_QUERY फ़ंक्शन "JSON कास्ट" की तरह व्यवहार करता है। चूंकि JSON_QUERY का परिणाम मान्य JSON टुकड़ा (ऑब्जेक्ट या सरणी) है, JSON_MODIFY इनपुट JSON को संशोधित करते समय इस मान से बच नहीं जाएगा।

JSON सरणी में नया मान जोड़ें

JSON_MODIFY फ़ंक्शन का उपयोग JSON के अंदर कुछ सरणी में नए मान जोड़ने के लिए किया जा सकता है:

update Product
set Data = JSON_MODIFY(Data, 'append $.tags', "sales")
where ProductID = 17;

नए मूल्य को सरणी के अंत में जोड़ा जाएगा, या मूल्य ["बिक्री"] के साथ एक नया सरणी बनाया जाएगा। JSON_MODIFY फ़ंक्शन नए मान को स्ट्रिंग के रूप में मानेगा (विशेष वर्णों से बचें, उचित JSON स्ट्रिंग बनाने के लिए इसे दोहरे उद्धरणों के साथ लपेटें)। यदि आपका नया मान JSON टुकड़ा है, तो आपको इसे JSON_QUERY फ़ंक्शन के साथ लपेटना चाहिए:

update Product
set Data = JSON_MODIFY(Data, 'append $.tags', JSON_QUERY('{"type":"new"}'))
where ProductID = 17;

दूसरे पैरामीटर के बिना JSON_QUERY फ़ंक्शन "JSON कास्ट" की तरह व्यवहार करता है। चूंकि JSON_QUERY का परिणाम मान्य JSON टुकड़ा (ऑब्जेक्ट या सरणी) है, JSON_MODIFY इनपुट JSON को संशोधित करते समय इस मान से बच नहीं जाएगा।

आंतरिक JSON संग्रह के साथ तालिका जोड़ें

यदि आपके पास JSON संग्रह के रूप में "चाइल्ड टेबल" स्वरूपित है और JSON कॉलम के रूप में इन-रो संग्रहीत है, तो आप इस संग्रह को अनपैक कर सकते हैं, इसे तालिका में रूपांतरित कर सकते हैं और इसे मूल पंक्ति के साथ जोड़ सकते हैं। मानक JOIN ऑपरेटर के बजाय, आपको CROSS APPLY का उपयोग करना चाहिए। इस उदाहरण में, उत्पाद भागों को JSON ऑब्जेक्ट्स के संग्रह के रूप में स्वरूपित किया जाता है और डेटा कॉलम में संग्रहीत किया जाता है:

select ProductID, Name, Size, Price, Quantity, PartName, Code
from Product
    CROSS APPLY OPENJSON(Data, '$.Parts') WITH (PartName varchar(20), Code varchar(5))

क्वेरी का परिणाम उत्पाद और भाग तालिकाओं के बीच जुड़ने के बराबर है।

JSON सरणी में मान वाली पंक्तियाँ ढूँढना

इस उदाहरण में, टैग सरणी में विभिन्न कीवर्ड हो सकते हैं, जैसे ["प्रोमो", "बिक्री"], इसलिए हम इस सरणी को खोल सकते हैं और फ़िल्टर विकल्प चुन सकते हैं:

select ProductID, Name, Color, Size, Price, Quantity
from Product
    CROSS APPLY OPENJSON(Data, '$.Tags') 
where value = 'sales'

OPENJSON टैग्स के आंतरिक संग्रह को खोलेगा और इसे तालिका के रूप में लौटाएगा। तब हम तालिका में कुछ मान द्वारा परिणाम फ़िल्टर कर सकते हैं।



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