我有一個表(名為,patrons),其中包含json_patron_varfieldsJSON 資料的列(名為,)——一個看起來像這樣的物件陣列:
[
{
"display_order": 1,
"field_content": "example 1",
"name": "Note",
"occ_num": 0,
"varfield_type_code": "x"
},
{
"display_order": 2,
"field_content": "example 2",
"name": "Note",
"occ_num": 1,
"varfield_type_code": "x"
},
{
"display_order": 3,
"field_content": "some field we do not want",
"occ_num": 0,
"varfield_type_code": "z"
}
]
我正在嘗試做的是定位包含命名鍵varfield_type_code和值的物件x,我已經能夠使用以下查詢進行操作:
SELECT
patrons.patron_record_id,
json_extract(patrons.json_patron_varfields, json_tree.path)
FROM
patrons,
json_tree(patrons.json_patron_varfields)
WHERE
json_tree.key = 'varfield_type_code'
AND json_tree.value = 'x'
field_content我的問題是......我如何從我正在提取的物件中提取(甚至可能過濾)鍵的值?
我正在努力解決如何做到這一點的語法......我在想它可以像使用一樣簡單,json_extract(patrons.json_patron_varfields, json_tree.path."field_content")但這似乎不正確..
uj5u.com熱心網友回復:
您可以 concat 構建字串
json_tree.path || '.field_content'
使用您給出的結構 - 您也可以使用它json_each()來代替json_tree()它可以簡化事情。
提煉:
SELECT
patrons.patron_record_id,
json_extract(value, '$.field_content')
FROM
patrons,
json_each(patrons.json_patron_varfields)
WHERE json_extract(value, '$.varfield_type_code') = 'x'
篩選:
SELECT
patrons.patron_record_id,
value
FROM
patrons,
json_each(patrons.json_patron_varfields)
WHERE json_extract(value, '$.varfield_type_code') = 'x'
AND json_extract(value, '$.field_content') = 'example 2'
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/415038.html
標籤:
