sql >> データベース >  >> RDS >> PostgreSQL

postgresqlの列としてjsonオブジェクトを取得するにはどうすればよいですか?

    それを「動的に」行うことはできません。必要な列を指定する必要があります:

    select name, description, id, 
           data ->> 'tax' as tax,
           data ->> 'other_attribute' as other_attribute
    from core;
    

    それを頻繁に行う場合は、それをビューに入れたいと思うかもしれません。

    もう1つのオプションは、JSONの属性を表すオブジェクトタイプをPostgresで作成することです。

    create type core_type as (id integer, tax numeric, price numeric, code varchar);
    

    次に、JSONをそのタイプにキャストすると、JSONの対応する属性が自動的に列に変換されます。

    上記のタイプと次のJSONの場合:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"} あなたができること:

    select id, (json_populate_record(null::core_type, data)).*
    from core;
    

    そしてそれは戻ります:

    id | tax  | price | code
    ---+------+-------+-----
     1 | 4.50 |    10 | YXCV
    

    ただし、すべてのJSON値ができることを確認する必要があります 対応するオブジェクトフィールドのタイプにキャストされます。

    オブジェクトタイプを変更すると、それを使用するすべてのクエリが自動的に更新されます。したがって、中央の定義を通じて、関心のある列を管理できます。



    1. 整数以外の整数の入力構文が無効ですか?

    2. SQLとMySQLの違いは何ですか

    3. 複数のテーブルにまたがる大量のデータを取得し、クエリのループを回避する方法

    4. mysqli_result::freeはphpのメモリ使用量を増やします