PostgreSQL jsonデータからkeyのみを取得する

PostgreSQL jsonデータからkeyのみを取得する

PostgreSQLで、jsonデータからkeyのみを取得する手順を記述してます。「json_object_keys」を使用することで可能です。

環境

  • OS CentOS Stream release 9
  • PostgreSQL 15.1
  • pgadmin4 6.16

keyのみを取得

keyのみを取得するには、「json_object_keys」を使用します。
※「josnb型」には「jsonb_object_keys」を使用します。

json_object_keys(jsonデータ);

jsonb_object_keys(jsonbデータ);

実際に、実行してみます。

SELECT 
json_object_keys('{"1":"aaa", "2":"bbb", "3":"ccc"}'),
jsonb_object_keys('{"1":"aaa", "2":"bbb", "3":"ccc"}');

実行結果をみると取得されていることが確認できます。

型の違う「jsonb」に「json_object_keys」を使用するとエラーとなります。
実際に、以下のテーブルの「jsonb」型の「jsonb_data」に実行してみます。

エラーとなることが確認できます。

SELECT 
json_object_keys(jsonb_data)
from json_test;

ERROR:  関数json_object_keys(jsonb)は存在しません
LINE 2: json_object_keys(jsonb_data)
        ^
HINT:  指定した名前と引数型に合致する関数がありません。明示的な型変換が必要かもしれません。
SQL 状態: 42883
文字: 9

実行結果

空を指定

引数を空にすると、エラーが発生します。

SELECT 
json_object_keys()
from json_test;

ERROR:  関数json_object_keys()は存在しません
LINE 2: json_object_keys()
        ^
HINT:  指定した名前と引数型に合致する関数がありません。明示的な型変換が必要かもしれません。
SQL 状態: 42883
文字: 9

実行結果