2016-08-25 10 views
4

次のJSonデータがSql Serverにあります。Sql Server 2016テーブルの列からJSONテキストを読み取る方法

{ 
"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

2番目のクエリから出力される出力は何ですか? –

+0

@TimBiegeleisen 2番目のクエリ結果で質問を更新しました – Roshan

答えて

3

てみてくださいこのクエリ:

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があり、問題を処理するいくつかの方法について説明しています。

関連する問題