ホームページ > データベース > mysql チュートリアル > PostgreSQL で JSON 配列内の要素をクエリするにはどうすればよいですか?

PostgreSQL で JSON 配列内の要素をクエリするにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-15 10:17:44
オリジナル
220 人が閲覧しました

How to Query Elements Within JSON Arrays in PostgreSQL?

PostgreSQL の JSON 配列のクエリ要素

はじめに

SQL は、JSON データのストレージを効果的に処理できます。この記事では、PostgreSQL の JSON オブジェクトに格納されている配列をクエリする方法に焦点を当てます。

JSON ネスト配列のクエリ

「data」という名前の JSON 列にオブジェクトの配列が含まれているとします。このタスクは、「objects」配列から特定の「src」値に一致するすべてのレコードを取得することです。

横結合とネスト解除を使用したクエリ

Postgres は、JSON 配列を展開するための json_array_elements() 関数を提供します。これを横結合と組み合わせることで、望ましい結果を得ることができます:

<code class="language-sql">SELECT *
FROM reports r, json_array_elements(r.data->'objects') obj
WHERE obj->>'src' = 'foo.png';</code>
ログイン後にコピー

このクエリは、JSON 配列要素ごとに横結合を作成し、列 obj が配列内の各オブジェクトを表すことができるようにします。

PostgreSQL 9.4 の代替手段

PostgreSQL 9.4 以降では、改善された JSON 処理を利用できます。

<code class="language-sql">SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>
ログイン後にコピー

このクエリでは、「@>」演算子は、配列に指定されたオブジェクトが含まれているかどうかを確認します。 JSON 配列構造と一致させるために、検索語を角括弧で囲むことを忘れないでください。

概要

JSON 型で配列をクエリするには、 json_array_elements() を使用して配列を展開し、横結合を実行します。 PostgreSQL 9.4 以降では、強化された「@>」演算子を照合 GIN インデックスとともに使用して、効率的な照合を行うことができます。どちらのメソッドでも、配列要素の値に基づいて特定のレコードを取得できます。

以上がPostgreSQL で JSON 配列内の要素をクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート