Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 高度なJSON操作 | JSON関数
SQLにおける関数

book高度なJSON操作

メニューを表示するにはスワイプしてください

PostgreSQL は、テーブル内の JSON データを直接修正するための強力なツールを提供しており、JSON ドキュメント全体を置き換えることなく情報を最新の状態に保つことができます。JSON カラムにキーと値のペアを追加または更新する必要がある場合は、jsonb_set 関数を使用します。この関数では、JSON 構造内の正確な位置を指定して値を挿入または更新できるため、ピンポイントでの変更が簡単かつ効率的に行えます。

JSON データからキーを削除する必要がある場合は、- 演算子を使用します。この演算子は、指定したキーを JSON オブジェクトから削除し、ドキュメントの他の部分には影響を与えずに不要な情報や古い情報を取り除くのに役立ちます。

jsonb_set- 演算子 を活用することで、JSON データを効率的に管理・更新でき、JSON コンテンツ全体を書き換えることなく、常に最新の情報を反映させることが可能です。

1234567
UPDATE user_profiles SET profile_data = jsonb_set(profile_data::jsonb, '{age}', '26', false) WHERE user_id = 1; SELECT user_id, profile_data FROM user_profiles WHERE user_id = 1;
copy

PostgreSQL における新しい JSON オブジェクトおよび配列の構築

PostgreSQL は、テーブルから直接構造化された JSON データを作成するための強力な関数を提供しています。この目的で最も有用な関数は jsonb_build_objectjsonb_build_array です。

jsonb_build_object

jsonb_build_object を使用すると、キーと値のペアを指定して新しい JSON オブジェクトを作成できます。この関数は、クエリ内のカラムや式から JSON オブジェクトを生成したい場合に最適です。

主なポイント:

  • 引数は偶数個で、キーと値を交互に指定;
  • キーはテキスト文字列である必要があり、値はカラム、リテラル、または式が指定可能;
  • 単一の JSON オブジェクトを返す。

例:

各ユーザーの ID と都市を含む JSON オブジェクトを作成:

SELECT jsonb_build_object(
    'user_id', user_id,
    'city', profile_data->'address'->>'city'
) AS user_summary
FROM user_profiles;

jsonb_build_array

jsonb_build_array を使用すると、値のリストから新しい JSON 配列を作成できます。これは、複数の項目を 1 つの JSON 配列にまとめて出力したり、JSON フィールドの更新や挿入に利用したりする際に便利です。

主なポイント:

  • 任意の個数の引数を受け付ける;
  • 引数にはカラム、リテラル、式が指定可能;
  • 単一の JSON 配列を返す。

例:

ユーザーの年齢と興味を JSON 配列としてまとめる:

SELECT jsonb_build_array(
    profile_data->>'age',
    profile_data->'interests'
) AS age_and_interests
FROM user_profiles;

実用的な用途

  • リレーショナルデータから API やレポート用の構造化 JSON 出力を直接生成;
  • JSON カラムの更新や挿入のために新しい JSON オブジェクトや配列を組み立て;
  • リレーショナル行をネストされた JSON 構造に変換するプロセスを簡素化。

jsonb_build_objectjsonb_build_array を活用することで、SQL クエリから柔軟にカスタム JSON ドキュメントを構築でき、リレーショナルデータとドキュメント指向データのワークフローを容易に橋渡しできます。

1234567891011
UPDATE user_profiles SET profile_data = jsonb_set( profile_data::jsonb, '{interests}', (profile_data->'interests')::jsonb || '"photography"' ) WHERE user_id = 2; SELECT user_id, profile_data FROM user_profiles WHERE user_id = 2;
copy

1. PostgreSQLでJSONBカラムのキーと値のペアを更新または追加するために使用される関数はどれか?

2. PostgreSQLでJSONBオブジェクトからキーを削除するために使用される演算子はどれか?

3. PostgreSQL でキーと値のペアから JSON オブジェクトを構築するには、どの関数を使用しますか?

question mark

PostgreSQLでJSONBカラムのキーと値のペアを更新または追加するために使用される関数はどれか?

正しい答えを選んでください

question mark

PostgreSQLでJSONBオブジェクトからキーを削除するために使用される演算子はどれか?

正しい答えを選んでください

question mark

PostgreSQL でキーと値のペアから JSON オブジェクトを構築するには、どの関数を使用しますか?

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 6.  4

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 6.  4
some-alt