在 postgresql 数据库中,我有一个包含 2 列的表:
Column1 是 VARCHAR 类型,包含多行 id,格式如下:ID1123312
Column2 是 JSONB 类型,包含多行具有以下结构的 json:
{
"a": [
{
"a1": "2022-01-01",
"a2": "2026-01-31",
"a3": 1
}
],
"b": [
{
"b1": "J",
"b2": "1231342138adc2fehj3j21321321321kjk1423j32k9"
}
],
"c": [
{
"c1-1": "2021-02-01",
"c1-2": "2021-01-01"
},
{
"c2-1": "2021-04-01",
"c2-2": "2021-03-01"
}
]
}
我需要构建一个 SELECT 语句来返回上面的行,将 b2 (1231342138adc2fehj3j21321321321kjk1423j32k9) 的值作为输入参数。
就像是:
SELECT *
FROM table
WHERE [Column2 contains b which contains b2 which has value '1231342138adc2fehj3j21321321321kjk1423j32k9'] ;
要不就:
SELECT *
FROM table
WHERE [value '1231342138adc2fehj3j21321321321kjk1423j32k9' exists in row from Column2 ]
我只是不知道如何给出这个指令。
任何帮助是极大的赞赏。
您可以
jsonb_path_exists
与 JSON 路径查询一起使用db<>小提琴
在
[*]
此路径中的意思是“任何数组元素”,并且? (@ == ...)
表示该路径上的值必须等于您的值的谓词。