高度な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つを試してチャットを始めてください