查找具有特定数组值的 postgres jsonb 列的所有行

find all rows that for a postgres jsonb column that have a specfic array value

(使用 Postgres 9.5)

假设您有一个具有以下架构的 Postgres table:


                                            Table "public.tableA"
        Column     |           Type           | Collation | Nullable |                   Default
    ---------------+--------------------------+-----------+----------+----------------------------------------------
     id            | bigint                   |           | not null | nextval('truelayer_tokens_id_seq'::regclass)
     user_id       | text                     |           | not null |
     created_at    | timestamp with time zone |           |          | now()
     updated_at    | timestamp with time zone |           |          |
     provider_id   | text                     |           | not null | ''::text
     scopes        | jsonb                    |           | not null | '{}'::jsonb

在范围列中是以下各种 user_ids 数据的子集。 ["A", "B", "C", "D", "E"]

我想 运行 查询 returns 特定 user_id 的所有行,其中“范围”中的数组包含值“A”

我什至都在努力着手,所以感谢所有建议。

使用 jsonb 包含运算符 @>:

SELECT id, scopes
FROM "tableA"
WHERE scopes @> '["A"]';