1. ホーム
  2. データベース
  3. ポストグレスキュー

postgresqlのjsonbデータの問い合わせと変更方法

2022-01-21 09:06:15

jsonbとは何ですか?
PostgreSQLのドキュメントで定義されているjsonとjsonbのデータ型はほとんど同じです。重要な違いは、jsonデータはJSON入力テキストの正確なコピーとして格納されるのに対し、jsonbはデータを分解したバイナリ形式、つまり、ASCII / UTF-8文字列としてではなく、バイナリコードとして格納するという点です。

この記事では、postgresqlでjsonb形式のデータをその場で問い合わせたり、変更したりする方法に焦点を当てます。

I. クエリ

簡単なクエリ

# The data stored is in key-value format, and the corresponding value is obtained by specifying the key
# Use -> to return the result with quotes
select '{"nickname": "goodspeed", "avatar": "avatar_url"}'::json->'nickname' as nickname;
# Use ->> to return results without quotes
select '{"nickname": "goodspeed", "avatar": "avatar_url", "tags": ["python", "golang", "db"]}'::json->>'nickname' as nickname;

複雑なクエリ

# {tags,0} means query key='tags' and value is the first element of the array in the array
select '{"nickname": "gs", "avatar": "avatar_url", "tags": ["python", " golang", "db"]}'::json#>'{tags,0}' as tag;
# {aa,b,0} represents the query key='aa', corresponding to the first element of the array in the value of key='b'
select '{"nickname": "gs", "avatar": "avatar_url", "tags": ["python", " golang", "db"], "aa":{"b": [{"c": 1}]}}'::jsonb#>>'{aa,b,0}';

次に

修正

jsonb_set(original data, position to be changed, value to replace, whether to add if it doesn't exist), 
select jsonb_set('[{"f1":1,"f2":null},2,null,3]', '{0,f1}', '[2,3,4]', false);

この記事postgresql jsonbデータクエリと変更はここにある、より関連postgresql jsonbデータクエリと変更内容は、スクリプト家の前の記事を検索してくださいまたは次の関連記事を閲覧し続けるあなたは、今後よりスクリプト家をサポートすることを願っています!.