高度なJSON操作
メニューを表示するにはスワイプしてください
PostgreSQL は、テーブル内の JSON データを直接修正するための強力なツールを提供しており、JSON ドキュメント全体を置き換えることなく情報を最新の状態に保つことができます。JSON カラムにキーと値のペアを追加または更新する必要がある場合は、jsonb_set 関数を使用します。この関数では、JSON 構造内の正確な位置を指定して値を挿入または更新できるため、ピンポイントでの変更が簡単かつ効率的に行えます。
JSON データからキーを削除する必要がある場合は、- 演算子を使用します。この演算子は、指定したキーを JSON オブジェクトから削除し、ドキュメントの他の部分には影響を与えずに不要な情報や古い情報を取り除くのに役立ちます。
jsonb_set と - 演算子 を活用することで、JSON データを効率的に管理・更新でき、JSON コンテンツ全体を書き換えることなく、常に最新の情報を反映させることが可能です。
1234567UPDATE 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;
PostgreSQL における新しい JSON オブジェクトおよび配列の構築
PostgreSQL は、テーブルから直接構造化された JSON データを作成するための強力な関数を提供しています。この目的で最も有用な関数は jsonb_build_object と jsonb_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_object と jsonb_build_array を活用することで、SQL クエリから柔軟にカスタム JSON ドキュメントを構築でき、リレーショナルデータとドキュメント指向データのワークフローを容易に橋渡しできます。
1234567891011UPDATE 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;
1. PostgreSQLでJSONBカラムのキーと値のペアを更新または追加するために使用される関数はどれか?
2. PostgreSQLでJSONBオブジェクトからキーを削除するために使用される演算子はどれか?
3. PostgreSQL でキーと値のペアから JSON オブジェクトを構築するには、どの関数を使用しますか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください