2016-08-25 3 views
4

У меня есть следующие данные JSon на Sql Server.Как читать текст JSON из столбца таблицы Sql Server 2016

{ 
"PartnerName": null, 
"PartnerCurrencyCode": "UAD", 
"PricingConditions": [ 
    { 
    "PricingConditionId": 659853, 
    "ConditionTypeCode": "ABCD", 
    "ConcessionItemTypeCode": "ABC", 
    "PriceLevel": null 
    } 
], 
"CurrencyMultiplier": 0 
} 

Ожидаемые результаты является:

PartnerName PartnerCode PartnerCurrencyCode PricingConditionId 
NULL   NULL   UAD     659853 

Я прочитал, что Sql Server 2016 имеет возможности чтения данных в формате JSON и Пытался со следующими запросами.

Запрос 1:

SELECT * FROM OPENJSON(@json, '$') 

Запрос 2:

SELECT * 
FROM OPENJSON(@json) 
WITH (PartnerName NVARCHAR(50) '$.PartnerName', 
    PartnerCode nvarchar(50) '$.PartnerCode', 
    PartnerCurrencyCode nvarchar(50) '$.PartnerCurrencyCode', 
    PricingConditionId nvarchar(50) '$.PricingConditions.PricingConditionId') 

Запрос Результаты 2:

PartnerName PartnerCode PartnerCurrencyCode PricingConditionId 
NULL   NULL   UAD     NULL 

Я Ожидал Значение "PricingConditionId" есть - 659853

+0

Какой результат дает второй запрос? –

+0

@TimBiegeleisen Я обновил вопрос со вторыми результатами запроса – Roshan

ответ

3

Try этот вопрос:

SELECT PartnerName, 
     PartnerCode, 
     PartnerCurrencyCode, 
     [PricingConditions[0]].PricingConditionId AS ProductID1 
FROM OPENJSON (@json) 
WITH (
    PartnerName NVARCHAR(50), 
    PartnerCode NVARCHAR(50), 
    PartnerCurrencyCode NVARCHAR(50), 
    [PricingConditions[0]].PricingConditionId NVARCHAR(50) 
) AS Partners 

link to a great article Здесь обсуждается несколько подходов к решению вашей проблемы.