[英]PostgreSQL 9.6 jsonb query using like on arrays
我需要用普通的類似函數查詢一個 jsonb 表字段。
這是我的 json 字段
"campi":[
{
"label":"testLabel",
"valore":[
"testValore",
"testValore2"
],
"idCampo":"testID",
"idCampoTP":"testCampoID",
"proprieta":[
{
"label":"testLabel",
"idProprieta":"testProp"
}
],
"idTipoCampo":"idTipoCampoID"
},
{
"label":"testLabel2",
"valore":[
"testValore3",
"testValore4"
],
"idCampo":"testID2",
"idCampoTP":"testCampoID2",
"proprieta":[
{
"label":"testLabel2",
"idProprieta":"testProp2"
}
],
"idTipoCampo":"idTipoCampoID2"
}
]
}
甚至可以進行這樣的查詢嗎?
SELECT customfield from procedura WHERE customfield->'campi' @> '[{"label":"testLabel3"}]'
但是使用帶有類似通配符的 testLabel3:testLabel%
另一個問題,是否甚至可以查詢以“testValore”的“valore”獲取對象“campi”?
我的夢想查詢是:
SELECT customfield from procedura WHERE customfield->'campi' @> '[{"label":"testLabel%"}]'
以 % 作為通配符
編輯:
我找到了一種方法來進行一些簡單的查詢:
SELECT customfield FROM procedura, jsonb_array_elements(procedura.customfield #> '{campi}') obj
WHERE obj->>'idCampoTP' LIKE 'testCampoID3%' group by procedura.id;
但我不知道如何在 valore 字段子數組中搜索
編輯:
我找到了這種方式,但對我來說似乎是一個垃圾解決方案
SELECT customfield FROM procedura, jsonb_array_elements(procedura.customfield #> '{campi}') obj
WHERE obj->>'valore' LIKE '%stValore5%' group by procedura.id;
是的,它有效:)
用於過濾您在問題中已經提到的“testValore”類型
數據->'campi'@>'[{"label":"testLabel3"}]';
用於提取類型為“testValore”的 id
數據->'campi'@>'[{"valore": ["testValore"]}]';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.