PostgreSQL jsonデータに値を追加する
- 作成日 2022.12.06
- PostgreSQL
- PostgreSQL
PostgreSQLで、jsonデータに値を追加する手順を記述してます。「jsonb_insert」に値を指定することで可能です。「json」にならないデータや既に存在するキーを指定するとエラーとなります。
環境
- OS CentOS Stream release 9
- PostgreSQL 15.1
- pgadmin4 6.16
jsonデータに値を追加
jsonデータに値を追加するには、「jsonb_insert」を使用します。
jsonb_insert(jsonデータ,追加する値);
実際に、実行してみます。
SELECT
jsonb_insert('{}', '{a}', '1'),
jsonb_insert('{"a" : 1}', '{b}', '2');
実行結果をみると、追加されていることが確認できます。
「json」に使用できるデータになっていないとエラーが発生します。
SELECT
jsonb_insert('{}', '{a}');
ERROR: 関数jsonb_insert(unknown, unknown)は存在しません
LINE 2: jsonb_insert('{}', '{a}');
^
HINT: 指定した名前と引数型に合致する関数がありません。明示的な型変換が必要かもしれません。
SQL 状態: 42883
文字: 10
実行結果
存在するキーを指定
存在するキーを追加しようとするとエラーになります。
SELECT
jsonb_insert('{"a" : 1}', '{a}', '2');
ERROR: 既存のキーを置き換えることはできません
HINT: jsonb_set関数を使ってキー値を置き換えることを試してください。
SQL 状態: 22023
位置を指定
配列データなどに位置を指定して値を追加することも可能です。
SELECT
jsonb_insert('{"a": 1, "b": [1, 2]}', '{b, 0}', '0'),
jsonb_insert('{"a": 1, "b": [1, 2]}', '{b, 1}', '0'),
jsonb_insert('{"a": 1, "b": [1, 2]}', '{b, 2}', '0');
実行結果
最後の引数に「true」を指定すると、指定した位置の後ろに値が挿入されます。
SELECT
jsonb_insert('{"a": 1, "b": [1, 2]}', '{b, 0}', '0', true),
jsonb_insert('{"a": 1, "b": [1, 2]}', '{b, 1}', '0', true),
jsonb_insert('{"a": 1, "b": [1, 2]}', '{b, 2}', '0', true);
実行結果
存在しない位置を指定してもエラーにはならずに、最後の位置に値が追加されます。
SELECT
jsonb_insert('{"a": 1, "b": [1, 2]}', '{b, 3}', '0');
実行結果
-
前の記事
javascript マイナスの場合は「0」に変換する方法 2022.12.06
-
次の記事
Oracle Database テーブルにコメントを追加する 2022.12.06
コメントを書く