2016-06-23 5 views
0

配列要素に対してクエリを実行することはできますか?私は、このJSONを持っていると言うことができます...それはトップレベルの項目で[OK]を作品のように思える:JSON配列要素に対してクエリを実行しますか?

{ 
    "_id": "5769cfbf7e45b52e388bbc78", 
    "address": { 
    "street": "2 Avenue", 
    "zipcode": "10075", 
    "building": "1480", 
    "coord": [ 
     73.9557413, 
     40.7720266 
    ] 
    }, 
    "borough": "Manhattan", 
    "cuisine": "Italian", 
    "grades": [ 
    { 
     "date": "2014-10-01T00:00:00.000Z", 
     "grade": "A", 
     "score": 11 
    }, 
    { 
     "date": "2014-01-06T00:00:00.000Z", 
     "grade": "B", 
     "score": 17 
    } 
    ], 
    "name": "Vella", 
    "restaurant_id": "41704620" 
} 

それは[XXX] .scoreグレードに対してwhere句を行うことをJSON_QUERY/JSON_VALUEを使用することは可能ですか?私。 grades.scoreのANYが17以上のすべてのドキュメントを返したいと考えています。

+0

:あなたは「EXISTS」節、または何でも必要とされている(@jsonを仮定すると、与えられたJSONデータを含む)で次のクエリを使用することができます。 microsoft.com/en-us/library/dn921879.aspx)。私はSQL Server 2016を利用できませんので、それ以上は本当に助けてはいけません。 – Blorgbeard

答えて

2

SQL AzureとSQL Server 2016では、JSONがネイティブでサポートされています。 // MSDN:私はあなたが[ `OPENJSON`](httpsを使用したいと思います

SELECT g.score as score 
FROM OPENJSON(@json) WITH (Id varchar(max)) j 
    CROSS APPLY OPENJSON(JSON_QUERY(@json, '$.grades')) WITH (score int) AS g 
WHERE g.score = 17 
+0

SQL Azureと** SQL Server 2016 **はJSONをネイティブにサポートしています。 – qxg

関連する問題