postgresql,从jsonb生成的字段

问题描述 投票:1回答:2

[我正在使用带有PostgreSQL 12的生成的列,其中包含来自jsonb字段的数据(包含具有"public":true"public":false的json

CREATE TABLE people (
    ...,
    data jsonb,
    public boolean generated always as ((data ->> 'public')::boolean) stored,
    ...
)

有时(来自不同应用程序的json)缺少public键。我如何将默认值设置为FALSE到public column?

sql json postgresql create-table jsonb
2个回答
0
投票

您可以将case表达式与?运算符一起使用,例如:

create table people (
    ...,
    data jsonb,
    public boolean generated always as (
        case 
            when data ? 'public' then (data ->> 'public')::boolean
            else false
        end
    ) stored
);

0
投票

找不到密钥时,->> operator返回->>,因此您可以将NULL设置为所需的默认值:

COALESCE
© www.soinside.com 2019 - 2024. All rights reserved.