我想更新MySQL数据库表中的部分JSON文档。
数据库中的字段名称:jdata
我不想要将其设置为jdata = '{_whatever_}'
,
因为我会松开钥匙。
我需要保留现有密钥(例如key1
,key3
)
并且只将key2
设置为新的指定值999
。
{
"calculation":{
"key1": 100,
"key2": 200,
"key3": 300
}
}
$a = json_encode(['key2' => 999], JSON_UNESCAPED_SLASHES);
$sql =
" UPDATE svtr.auftrag
SET jdata = JSON_SET(jdata, '$.calculation', '{$a}')
WHERE[...]
";
使用像这样的完整路径:
JSON_SET(jdata, '$.calculation.key2', 999)
这里没有选项,因为原始的JSON文档要复杂得多,我必须迭代许多键。可以想象它有30个键/值对,需要更新其中的29个。
希望任何人都能理解我的谣言......提前致谢!