2017-09-05 15 views
0

私は、SQL Server 2016のいくつかのJSONに、 'key'が特定の値を持つすべてのレコードを検索するために、以下の構造でクエリを実行しようとしています。どのようにこれを行うにはどのような助け?あなたは、SQL 2016の上にある場合はSQL ServerクエリJSON配列

{ 
    "nodeDataArray": [{ 
     "key": "5B502176-E51A-48B7-B8F0-350984CFBCF2", 
     "category": "IFM" 
    }, { 
     "key": "1260263E-6111-47B2-9776-FE9BA5C90DCB", 
     "category": "IFM" 
    }, { 
     "key": "8AE454D3-944E-47BE-8CA9-049318DE213B", 
     "category": "IFM" 
    }, { 
     "key": "96B20972-F88C-44BA-84AA-C1F45BE5C7D5", 
     "category": "IFM" 
    } 
    }] 
} 

おかげで、

マット

+0

どのようなSQL Serverのバージョンを使用しますか?このバージョンでクエリが実行されることが保証されていますか? –

+0

コードサンプルやデータサンプルを投稿する場合は、テキストエディタでこれらの行を強調表示し、エディタツールバーの "コードサンプル"ボタン( '{}')をクリックして、フォーマットして構文を強調表示してください! –

+0

SQL Server Version 2016 – mnt

答えて

1
DECLARE @json NVARCHAR(MAX) 


SET @json = N'{ 
    "nodeDataArray": [ 
    { 
     "key": "5B502176-E51A-48B7-B8F0-350984CFBCF2", 
     "category": "IFM" 
    }, 
    { 
     "key": "1260263E-6111-47B2-9776-FE9BA5C90DCB", 
     "category": "IFM" 
    }, 
    { 
     "key": "8AE454D3-944E-47BE-8CA9-049318DE213B", 
     "category": "IFM" 
    }, 
    { 
     "key": "96B20972-F88C-44BA-84AA-C1F45BE5C7D5", 
     "category": "IFM" 
    } 
] 
}' 

SELECT 
    JSON_VALUE(nda.value, '$.key') AS [key], 
    JSON_VALUE(nda.value, '$.category') AS [category] 
FROM OPENJSON(@json, '$.nodeDataArray') AS nda 
WHERE JSON_VALUE(nda.value, '$.key') = '1260263E-6111-47B2-9776-FE9BA5C90DCB' 
+0

閉じるが、これは私が持っていたのと同じ構造ではありません。私は値を含むnodeDataArrayの配列を持っていました... – mnt

+0

これは私が必要としていたものです。ありがとうございます。 – mnt

+0

あなたは正しい答えとして印を付けてもよろしいですか? –

0

は、この記事を見て: JSON Data (SQL Server)

SQL 2016を使用していない場合、ネイティブJSONサポートはありません。最善の策は、.NETに何かを書いて、SQL SPや関数から呼び出すことです(Googleがこれを使い始める手助けをします)。

+0

私はSQL Server 2016を使用しています。実際には、DBに直接クエリを実行して、キーの特定の値を含むすべてのレコード(JSONデータを含む数百のレコードがあります)を検索します。そのための構文は私には分かりません。これを行うための.Net関数を書くことができましたが、私に情報を得るためにクエリを送信できるかどうか疑問に思っていました... – mnt