2017-11-17 17 views
2

私は以下のJSONを持っており、名前プロパティ値だけをクエリする必要があります。続きSQLでJSONネストされた配列オブジェクトを照会

DECLARE @j NVARCHAR(4000) = N'{ 
    "ArrayValue":[ 
     { 
      "name": "XXX", 
      "value": 10 
     }, 
     { 
      "name": "Memory123", 
      "value": 20 
     } 
    ] 
}' 

は私がWhcihは、次のような出力が得られますOPENJSON()

SELECT value as Name 
FROM OPENJSON(@j, '$.ArrayValue') 

で得るものです。

Name 
--------------------------------------------------- 
{    "name": "Memory"   } 
{    "name": "Memory123"   } 

ただし、次の形式で出力する必要があります。

Name 
----- 
Memory 
Memory123 

置換を使用しないと簡単な方法はありますか?

答えて

2

JSON列としてArrayValueを定義し、次にCROSS APPLYを使用して名前値を取得できます。ここに例があります:

DECLARE @j NVARCHAR(4000) = N'{ 
    "ArrayValue":[ 
     { 
      "name": "XXX", 
      "value": 10 
     }, 
     { 
      "name": "Memory123", 
      "value": 20 
     } 
    ] 
}' 
SELECT b.name 
FROM OPENJSON(@j) 
WITH (ArrayValue NVARCHAR(MAX) AS JSON) AS a 
CROSS APPLY OPENJSON(a.ArrayValue) 
WITH ([name] NVARCHAR(100)) AS b 
関連する問題