PostgreSQL jsonデータに位置を指定して値を取得する
- 作成日 2023.10.25
- PostgreSQL
- PostgreSQL

PostgreSQLで、jsonデータに位置を指定して値を取得する手順を記述してます。「json_extract_path」にインデックス番号を指定することで取得することが可能です。
環境
- OS CentOS Stream release 9
- PostgreSQL 15.1
- pgadmin4 6.16
位置を指定して値を取得
位置を指定して値を取得するには、「json_extract_path」を使用します。
※「josnb」型には「jsonb_extract_path」を使用します。
json_extract_path(jsonデータ,インデックス番号);
json_extract_path(jsonデータ,インデックス番号);
実際に、実行してみます。
SELECT
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'aaa'),
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'bbb');
実行結果をみると、取得されていることが確認できます。

存在しないインデックス番号を指定すると「null」が返ります。
SELECT
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'ccc');
実行結果

ネストされたjsonデータ
ネストされたjsonデータの各要素を取得する場合は、インデックス番号を指定後に再度指定します。
SELECT
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'bbb', 'x'),
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'bbb', 'y');
実行結果

ネストされていないjsonデータに対して、同様の処理を行うと「null」が返ります。
SELECT
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'aaa', 'x'),
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'aaa', 'y');
実行結果

textデータとして取得
結果を「textデータ」として取得する場合は「json_extract_path_text」を使用します。
SELECT
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'aaa'),
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'bbb', 'x'),
json_extract_path('{"aaa": 1, "bbb": {"x": 2, "y": 3}}', 'bbb', 'y');
実行結果

-
前の記事
Android Studio 指定した行に移動するショートカットキー 2023.10.25
-
次の記事
kotlin 比較演算子を使用する 2023.10.25
コメントを書く