尝试从 postgres 表中获取多个 id,该表的列类型为 jsonB

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

嗨,团队我正在尝试从 postgres 获取多个 id。所以这里我的要求是我有多个 id,因此所有 id 都存储在 jsonb 类型的规则列的规则集表中。因此,当我尝试从规则集表中获取这些 id 时,我无法获取,所以我运行的查询是

SELECT * FROM rulesets
Where rules IN('2c084b4e-9658-4f50-afe4-a0a820d1d51d', '23de26ef-c3aa-4f31-81dd-1b63e1e2f699',
                   '7a1af945-c5bd-4709-b5f3-24180398da7d', '665ecd7e-900a-4b30-b6da-19ff7a0068b3')

所以在运行此查询时我遇到此错误

错误

ERROR: Token "2c084b4e" is invalid.invalid input syntax for type json ERROR: invalid input syntax for type json SQL state: 22P02 Detail: Token "2c084b4e" is invalid. Character: 40 Context: JSON data, line 1: 2c084b4e...

这里因为它的 jsonB 类型我已经用文本进行了类型转换,但结果是空的。因此,在这里请帮助我给出正确的查询以从规则集表中获取多个规则。谢谢你

postgresql
1个回答
0
投票

你可以试试这个

SELECT * FROM rulesets
WHERE EXISTS (
    SELECT 1 FROM jsonb_array_elements_text(rulesets.rules) AS elem
    WHERE elem.value IN ('2c084b4e-9658-4f50-afe4-a0a820d1d51d', 
        '23de26ef-c3aa-4f31-81dd-1b63e1e2f699',
        '7a1af945-c5bd-4709-b5f3-24180398da7d', 
        '665ecd7e-900a-4b30-b6da-19ff7a0068b3')
);
© www.soinside.com 2019 - 2024. All rights reserved.