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

SQL सर्वर में JSON दस्तावेज़ से डुप्लिकेट कुंजियाँ कैसे लौटाएँ?

यदि आप किसी JSON दस्तावेज़ से मान निकालने का प्रयास कर रहे हैं, लेकिन समान स्तर पर एक या अधिक मानों में डुप्लिकेट कुंजियाँ हैं, तो यदि आप JSON_QUERY() या JSON_VALUE()

वे दोनों कार्य केवल पथ से मेल खाने वाले पहले मान को वापस कर देंगे।

सौभाग्य से, एक और विकल्प है।

OPENJSON() फ़ंक्शन समान स्तर पर किसी भी डुप्लिकेट कुंजी से सभी मान लौटाएगा।

उदाहरण

यहां OPENJSON() प्रदर्शित करने के लिए एक उदाहरण दिया गया है समान स्तर पर डुप्लिकेट गुण लौटाना।

DECLARE @json NVARCHAR(4000) =N'{ "dog" :{ "details" :{ "name" :"Fetch", "name" :"Good Dog", "sex" :"male" " } } }'; चुनें * OPENJSON से(@json, '$.dog.details'); 

परिणाम:

+----------+----------+----------+| कुंजी   | मूल्य    | टाइप करें   ||----------+----------+----------|| नाम  | फ़ेच    | 1      || नाम  | अच्छा कुत्ता | 1      || सेक्स   | पुरुष     | 1      |+----------+----------+----------+

यह उदाहरण $.dog.details . के सभी बच्चों को लौटाता है कुंजी।

इस मामले में, हमारे पास समान स्तर पर समान नाम वाली दो कुंजियाँ हैं (name कुंजी)।

अगर हम दो name . से केवल मान वापस करना चाहते हैं कुंजियाँ, हम निम्न की तरह कुछ कर सकते हैं।

DECLARE @json NVARCHAR(4000) =N'{ "dog" :{ "details" :{ "name" :"Fetch", "name" :"Good Dog", "sex" :"male" " } } }'; OPENJSON(@json, '$.dog.details') से मान चुनें जहां [कुंजी] ='नाम'; 

परिणाम:

+----------+| मान    ||----------|| फ़ेच    || अच्छा कुत्ता |+----------+

JSON_VALUE() &JSON_QUERY ()

जैसा कि बताया गया है, दोनों JSON_VALUE() और JSON_QUERY() पथ से मेल खाने वाला केवल पहला मान लौटाएं।

इसलिए यदि हम उपरोक्त JSON दस्तावेज़ के विरुद्ध उनका उपयोग करने का प्रयास करते हैं, तो हमें निम्नलिखित परिणाम मिलते हैं।

JSON_VALUE()

JSON_VALUE() JSON स्ट्रिंग से एक अदिश मान लौटाता है, इसलिए यह निम्न परिणाम लौटाएगा।

DECLARE @json NVARCHAR(4000) =N'{ "dog" :{ "details" :{ "name" :"Fetch", "name" :"Good Dog", "sex" :"male" " } } }'; चुनें JSON_VALUE(@json, '$.dog.details.name') AS [JSON_VALUE]; 

परिणाम:

+--------------+| JSON_VALUE   ||--------------|| फ़ेच        |+--------------+

JSON_QUERY()

JSON_QUERY() JSON स्ट्रिंग से किसी ऑब्जेक्ट या सरणी को निकालता है, इसलिए यह निम्न परिणाम लौटाएगा।

DECLARE @json NVARCHAR(4000) =N'{ "dog" :{ "details" :{ "name" :"Fetch", "name" :"Good Dog", "sex" :"male" " } } }'; चुनें JSON_QUERY(@json, '$.dog.details') AS [JSON_QUERY]; 

परिणाम:

+--------------+| JSON_QUERY   ||--------------|| {              "नाम" :"लाओ",                 "नाम" :"अच्छा कुत्ता",             "सेक्स" :"पुरुष"     -------------- 

कम से कम JSON_QUERY() . के साथ हमें डुप्लीकेट कुंजियाँ देखने को मिलती हैं, लेकिन हमें उनके अलग-अलग मान नहीं मिलते जैसे हमें OPENJSON() के साथ मिलते हैं ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पुनर्प्राप्ति बनाम कोई पुनर्प्राप्ति विकल्प के साथ SQL सर्वर पुनर्स्थापना डेटाबेस का अन्वेषण करें

  2. SQL सर्वर (T-SQL) में एक महीने के नाम को महीने की संख्या में बदलें

  3. SQL सर्वर लेनदेन लॉग की मूल बातें

  4. SQL सर्वर में नेस्टेड चयन कथन

  5. एक स्ट्रिंग से केवल संख्याएँ प्राप्त करने की क्वेरी