ホームページ >データベース >mysql チュートリアル >SQL Server 2016 で JSON オブジェクトの配列から値の配列を抽出する方法

SQL Server 2016 で JSON オブジェクトの配列から値の配列を抽出する方法

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-09 18:41:42872ブラウズ

How to Extract an Array of Values from an Array of JSON Objects in SQL Server 2016?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。