का उपयोग कर SQL सर्वर 2016 में JSON ऐरे तक पहुंचने से मैं नए परिचय वाले JSON_VALUE फ़ंक्शन का उपयोग करके जेसन के अंदर सरणी एक्सेस करते समय अटक गया हूं। कृपया कोड को अपनाने पर विचार -JSON_VALUE
IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='JsonData')
DROP TABLE JsonData;
go
CREATE TABLE JsonData(JsonData nvarchar(max));
DECLARE @SQL nvarchar(max);
DECLARE @Table AS TABLE(JsonPath VARCHAR(256));
INSERT INTO JsonData(JsonData)
VALUES(
'{
"firstName": "John",
"lastName" : "doe",
"age" : 26,
"address" : {
"streetAddress": "naist street",
"city" : "Nara",
"postalCode" : "630-0192"
},
"phoneNumbers": [
{
"type" : "iPhone",
"number": "0123-4567-8888"
},
{
"type" : "home",
"number": "0123-4567-8910"
}
]
}')
INSERT INTO @Table
SELECT VALUE FROM OPENJSON('{
"Path1":"$.firstName","Path2":"$.phoneNumbers[:1].number"
}') ;
SELECT @SQL=(SELECT 'UNION SELECT '''+ CAST(JsonPath AS VARCHAR(256)) +''',JSON_VALUE(JsonData,'''+a.JsonPath+''')
FROM JsonData a'
FROM @Table a
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)')
FROM @Table t;
SELECT @SQL=RIGHT(@SQL,LEN(@SQL)-5)
PRINT @SQL
EXEC SP_EXECUTESQL @SQL;
यहाँ अगर मैं विशिष्ट फोन तो संख्या इस नोड काम नहीं कर रहा तक पहुँचने के सामान्य वाक्य रचना का उपयोग करना चाहते हैं। मैं इस मामले
JSON path is not properly formatted. Unexpected character ':' is found at position 15.
हालांकि में निम्न त्रुटि हो रही है जब मैं http://jsonpath.com पर जाँच की है, मैं मान प्राप्त करने में सक्षम हूँ। क्या SQL सर्वर 2016 JSON मानों तक पहुंचने के लिए कुछ अलग वाक्यविन्यास का उपयोग करता है?
यह वह जगह है विषय से हटकर लेकिन know.You लिए उपयोगी हो सकता है ड्रॉप टेबल का उपयोग कर सकते हैं अगर EXSSTS JsonData अगर (ड्रॉप) ड्रॉप टेबल के बजाय .... –
सहमत हैं, पुरानी आदतें मरती हैं :-) –