SQL Server 2016 JSON 変換: オブジェクト配列を値配列に変換する
SQL Server 2016 の JSON 機能は強力ですが、オブジェクトの配列を値の配列に変換するには、特定のアプローチが必要です。 課題と解決策を説明しましょう。
次のシナリオについて考えてみましょう:
<code class="language-sql">CREATE TABLE #temp (item_id VARCHAR(256)) INSERT INTO #temp VALUES ('1234'),('5678'),('7890') SELECT * FROM #temp -- Initial JSON conversion attempt SELECT (SELECT item_id FROM #temp FOR JSON PATH,root('ids')) </code>
これにより、オブジェクト:
の JSON 配列が生成されます。<code class="language-json">{ "ids": [{ "item_id": "1234" }, { "item_id": "5678" }, { "item_id": "7890" }] }</code>
ただし、目標は 値:
の JSON 配列です。<code class="language-json">{ "ids": [ "1234", "5678", "7890" ] }</code>
重要なのは、中間ステップとして XML を活用することです。
<code class="language-sql">SELECT JSON_QUERY('[' + STUFF(( SELECT ',' + '"' + item_id + '"' FROM #temp FOR XML PATH('')),1,1,'') + ']' ) ids FOR JSON PATH , WITHOUT_ARRAY_WRAPPER </code>
このクエリは、最初に値を表す XML 文字列を構築し、次に STUFF
を使用して先頭のカンマを削除し、最後に結果を角括弧で囲んで JSON 配列を形成します。 FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
句は、出力が単一のオブジェクトを含む配列ではなく、値の単一の JSON 配列であることを保証します。 これにより、目的の JSON 構造が効率的に実現されます。
以上がSQL Server のオブジェクト配列を JSON の値の配列に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。