我在mysql中有以下格式:
{"2017": {"1": {"payed": 0, "charge": 0}}}
使用这种格式我做了早期的SQL查询,并且工作非常好(读取/更新付费和充电值),但是我有问题,当我需要追加到它“2018”年,所以我需要得到这个:< / p>
{"2017": {"1": {"payed": 0, "charge": 0}}, "2018": {"1": {"payed": 0, "charge": 0}}}
我尝试使用此代码添加“2018”年:
UPDATE calculation
SET payment = JSON_ARRAY_APPEND(payment, '$', CAST('{"2018": {"1": {"payed": 0,"charge": 0}}}' as JSON));
得到这个:
[{"2017": {"1": {"payed": 0, "charge": 0}}}, {"2018": {"1": {"payed": 0, "charge": 0}}}]
我的previus SQL Query不起作用,因为它们需要:
{"2017": {"1": {"payed": 0, "charge": 0}}, "2018": {"1": {"payed": 0, "charge": 0}}}
如何成功附加以获得我需要的格式?重写previus SQL查询,这是很多工作,所有都是连接的。所以我需要追加并获得这种格式...谢谢。
答案 0 :(得分:0)
好的,我这样做很长,但如果有人知道如何改进一个SQL查询就可以了:
UPDATE calculation
SET payment = SUBSTRING(payment, 1, CHAR_LENGTH(payment)-1);
UPDATE calculation
SET payment = CONCAT(payment, ', "2018": {"1": {"payed": 0, "charge": 0}}}');
所以第一个查询从付款字段中的JSON字符串中删除最后一个} ....第二个查询在字段中添加2018年的新付款值,这样我就拥有了我需要的东西:
{"2017": {"1": {"payed": 0, "charge": 0}}, "2018": {"1": {"payed": 0, "charge": 0}}}
所以为了获得性能并使其更快......我需要将其重写为单个查询...
答案 1 :(得分:0)
好的..在合并上面的两个命令后,我最终得到了它:
UPDATE calculation
SET payment = CONCAT(SUBSTRING(payment, 1, CHAR_LENGTH(payment)-1), ', "2018": {"1": {"payed": 0, "charge": 0}}}');
这不是聪明的方式,但它有效。