mysql 如何修改JSON字段中的一部分参数值

在 MySQL 中修改 JSON 对象中的一部分值可以使用一些内置的 JSON 函数来实现。假设你有一个包含 JSON 数据的列,你可以使用 JSON_SET() 函数来更新其中的某个字段。

假设你有一个表 my_table,其中有一个 json_column 列包含 JSON 数据,示例数据如下:

{
  "name": "John",
  "age": 30,
  "address": {
    "city": "New York",
    "state": "NY"
  }
}

现在,假设你想更新 address 对象中的 city 字段为 “San Francisco”。你可以使用 JSON_SET() 函数来实现:

UPDATE my_table
SET json_column = JSON_SET(json_column, '$.address.city', 'San Francisco')
WHERE id = 1;

如果要更新的字段不存在,JSON_SET() 函数会自动创建它。

在举个例子,json如下:

{
	"id": 1726768430132957191,
	"col": 8,
	"data": "",
	"canSee": true,
	"isValid": "Y",
	"maxSize": 20,
	"dataJson": null,
	"dictType": "",
	"disabled": false,
	"formHide": true,
	"isDelete": true,
	"tenantId": 1702555882876141569,
	"optionArr": [{
		"label": "系统生成",
		"value": "SYSTEM",
		"showClose": null
	}, {
		"label": "通用模板",
		"value": "MANUAL",
		"showClose": null
	}]
	}

要更新 optionArr 数组中的一个元素的 label 字段。在 JSON 中,optionArr 是一个数组,因此你需要使用 JSON path 来指定要更新的具体元素。在 MySQL 中,数组的索引从0开始。

下面是更新语句需要进行的调整:

UPDATE lc_template_table
SET module_meta = JSON_SET(module_meta, '$.optionArr[0].label', '实验生成')
WHERE id = 1;

同时想将optionArr[1]…label 修改成“通用模板 ” 怎么修改呢

UPDATE lc_template_table
SET module_meta = JSON_SET(
    JSON_SET(module_meta, '$.optionArr[0].label', '实验生成'),
    '$.optionArr[1].label', '通用模板'
)
WHERE id = 1;

在这个更新语句中:

JSON_SET() 函数被嵌套使用。外部的 JSON_SET() 用来更新整体的 module_meta JSON 对象。
内部的 JSON_SET() 分别用来更新 optionArr 数组中的两个元素的 label 字段。
第一个 JSON_SET() 更新 optionArr[0].label 为 ‘实验生成’。
第二个 JSON_SET() 更新 optionArr[1].label 为 ‘通用模板’。
这样就可以一次性修改多个元素的值。记得根据实际情况调整数组元素的索引,确保更新到正确的位置。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值