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

OPENJSON, JSON_QUERY, और JSON_VALUE (SQL सर्वर) का उपयोग करते समय विशेष वर्ण वाली JSON कुंजियों का संदर्भ कैसे दें

यदि आप T-SQL फ़ंक्शन जैसे OPENJSON() . का उपयोग कर रहे हैं , JSON_QUERY() , या JSON_VALUE() , आप किसी भी गैर-अल्फ़ान्यूमेरिक वर्णों से सावधान हो सकते हैं जो JSON दस्तावेज़ में हो सकते हैं जिसके साथ आप काम कर रहे हैं। विशेष रूप से यदि वे विशेष वर्ण मुख्य नामों में हैं, और आपको उन प्रमुख नामों को संदर्भित करने की आवश्यकता है।

उदाहरण के लिए, आपके पास एक कुंजी नाम हो सकता है जिसमें एक स्थान हो (जैसे "first name" ), या डॉलर का चिह्न ($ )।

सौभाग्य से, जब भी आप ऐसी चाबियों का संदर्भ देते हैं, तो आप बस कुंजी नाम को दोहरे उद्धरण चिह्नों से घेर सकते हैं।

उदाहरण 1 - OPENJSON()

OPENJSON() का उपयोग करते समय एक कुंजी को उसके नाम में एक स्थान के साथ संदर्भित करने का एक उदाहरण यहां दिया गया है ।

DECLARE @json NVARCHAR(4000) = N'{
        "contact details" : {
            "client id" : 1, 
            "work phone" : "+61 987 902 029"
        }
    }';
SELECT * FROM OPENJSON(@json, '$."contact details"');

परिणाम:

+------------+-----------------+--------+
| key        | value           | type   |
|------------+-----------------+--------|
| client id  | 1               | 2      |
| work phone | +61 987 902 029 | 1      |
+------------+-----------------+--------+

यहां एक और उदाहरण है, इस बार हमारे पास कुंजी नाम में एक डॉलर का चिह्न है।

DECLARE @json NVARCHAR(4000) = N'{
        "$ per hour" : {
            "normal rate" : 80, 
            "overtime" : 160 
        }
    }';
SELECT * FROM OPENJSON(@json, '$."$ per hour"');

परिणाम:

+-------------+---------+--------+
| key         | value   | type   |
|-------------+---------+--------|
| normal rate | 80      | 2      |
| overtime    | 160     | 2      |
+-------------+---------+--------+

उदाहरण 2 - JSON_QUERY()

यहां JSON_QUERY() का उपयोग करके एक उदाहरण दिया गया है ।

DECLARE @json NVARCHAR(4000) = N'{
        "contact details" : {
            "client id" : 1, 
            "work phone" : "+61 987 902 029"
        }
    }';
SELECT JSON_QUERY(@json, '$."contact details"');

परिणाम:

+--------------------+
| (No column name)   |
|--------------------|
| {
            "client id" : 1, 
            "work phone" : "+61 987 902 029"
        }                    |
+--------------------+

और यहाँ यह एक डॉलर के चिन्ह के साथ है।

DECLARE @json NVARCHAR(4000) = N'{
        "$ per hour" : {
            "normal rate" : 80, 
            "overtime" : 160 
        }
    }';
SELECT JSON_QUERY(@json, '$."$ per hour"');

परिणाम:

+--------------------+
| (No column name)   |
|--------------------|
| {
            "normal rate" : 80, 
            "overtime" : 160 
        }                    |
+--------------------+

उदाहरण 3 - JSON_VALUE()

यह उदाहरण JSON_VALUE() . का उपयोग करता है ।

DECLARE @json NVARCHAR(4000) = N'{
        "contact details" : {
            "client id" : 1, 
            "work phone" : "+61 987 902 029"
        }
    }';
SELECT JSON_VALUE(@json, '$."contact details"."work phone"');

परिणाम:

+--------------------+
| (No column name)   |
|--------------------|
| +61 987 902 029    |
+--------------------+

और यहाँ यह डॉलर के चिन्ह के साथ है।

DECLARE @json NVARCHAR(4000) = N'{
        "$ per hour" : {
            "normal rate" : 80, 
            "overtime" : 160 
        }
    }';
SELECT JSON_VALUE(@json, '$."$ per hour"."normal rate"') AS [Normal Rate];

परिणाम:

+---------------+
| Normal Rate   |
|---------------|
| 80            |
+---------------+

  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 डेटाबेस के लिए Android एक्सेस

  2. SQL सर्वर (T-SQL उदाहरण) में 'डेटाटाइम' को 'स्मॉलडेटटाइम' में बदलें

  3. मैं स्थानीय ड्राइव पर दूरस्थ SQL सर्वर डेटाबेस का बैकअप कैसे ले सकता हूं?

  4. सबक्वेरी में ऑर्डर के साथ एसक्यूएल त्रुटि

  5. डेटाबेस में निर्देशिका/पदानुक्रम/वृक्ष संरचना को कैसे स्टोर करें?