SQL Server 2016: JSON オブジェクト配列を値配列に変換する
SQL Server 2016 の JSON 機能は堅牢ですが、特定のデータ構造を抽出するには創造的なアプローチが必要な場合があります。 この例では、オブジェクトの JSON 配列をより単純な値の配列に変換する方法を示します。
課題:
オブジェクトの JSON 配列を生成するクエリを考えてみましょう。
<code class="language-sql">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>
目標は、これを item_id
値のみを含む JSON 配列に再構築することです。
<code class="language-json">{ "ids": [ "1234", "5678", "7890" ] }</code>
解決策:
重要なのは、XML を仲介者として利用する 2 段階のプロセスです。
<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>
このコードは、まず FOR XML PATH('')
を使用して item_id
の値を連結し、それぞれを二重引用符で囲みます。 STUFF
は先頭のカンマを削除します。 結果は角かっこで囲まれて有効な JSON 配列を作成し、JSON_QUERY
で解析されます。 最後に、FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
は出力を単純な JSON 配列としてフォーマットします。 これにより、元の JSON オブジェクト配列が目的の値の配列に効果的に平坦化されます。
以上がSQL Server 2016 で JSON オブジェクトの配列から値の配列を抽出する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。