我正在尝试用于处理JSON列的mysql 5.7的新API。我test
列如下:mysql 5.7将键/值附加到嵌套的json对象
{"foo":{"efg":1}, "bar":{"abc":0}}
我想要做的就是追加到的关键之一,例如foo
所以它会导致"foo":{"efg":1, "klm":2}
。我已经试过到目前为止以下their documentation:
mysql> select json_insert(test, '$.foo', 10, '$.foo.klm', 2) from table1
where name='Joe';
,做什么是替代"efg":1
,结果是"foo":{"klm":2}
。
mysql> select json_array_append(test, '$.foo', '{"klm":2}') from table1 where
name="Joe';
上面一行明显的转换foo
到一个数组"foo":[{"efg":1}, {"klm":2}]
,这不是我想要的。
我试着结合在一起的查询:
mysql> select json_insert(test, '$.foo', 10, '$.foo',
select json_merge(select json_extract(test, '$.foo') from table1
where name="Joe"), '{"klm":2}') from table1 where name="Joe";
这只是给了我一个语法错误near select json_extract(test, '$.foo')
。
任何意见将不胜感激。
@JoachimIsaksson期望的结果应该是'{ “foo” 的:{ “EFG”:1, “KLM”:2},“栏 “:{” ABC“:0}}'。他们的文档主要用于修改数组,但我想将所有内容都保存为Object。 – denikov
我使用'json_insert'得到了确切的结果,(或者只是'从table1中选择json_insert(test,'$ .foo.klm',2),其中name ='Joe';''“efg”:1'不会 –
@JoachimIsaksson我不知道问题出在哪儿,我发出了一些参数,就像在你的评论中一样,它仍然替换了''foo''Object的所有内容。 – denikov