在MySQL中修改JSON字段的特定键值

遇到问题:

在mysql中,存在一个字段,里面存储的类型是字符串,格式是JSON格式

[{"url":"/iplarform/building_1655885407111.jpg","uid":"1","name":"building_1655885407111.jpg"},{"url":"/iplarform/building_1655885407504.jpg","uid":"1","name":"building_1655885407504.jpg"}]

现在需要把uid所对应的值替换为不同的值

解决办法:

UPDATE your_table
SET inspection_img = JSON_REPLACE(inspection_img, '$[0].uid', 'new_value')
WHERE inspection_img LIKE '%"uid":"1"%';

下面是一些常用的JSON函数:

  1. JSON_EXTRACT(): 用于提取JSON字段中的特定键值对。它接受两个参数,第一个参数是JSON字段,第二个参数是要提取的键的路径。例如,JSON_EXTRACT(inspection_img, '$[0].uid')将提取JSON数组中第一个对象的uid键的值。

  2. JSON_REPLACE(): 用于替换JSON字段中的特定键值对。它接受三个或更多参数,第一个参数是JSON字段,后面的参数是要替换的键和值对。例如,JSON_REPLACE(inspection_img, '$[0].uid', 'new_value')将替换JSON数组中第一个对象的uid键的值为'new_value'。

  3. JSON_SET(): 用于设置JSON字段中的特定键值对。它接受三个或更多参数,第一个参数是JSON字段,后面的参数是要设置的键和值对。如果键已存在,则替换其值;如果键不存在,则添加新的键值对。例如,JSON_SET(inspection_img, '$[0].uid', 'new_value')将设置JSON数组中第一个对象的uid键的值为'new_value'。

  4. JSON_ARRAY(): 用于创建一个JSON数组。它接受一个或多个参数,每个参数表示数组中的一个元素。例如,JSON_ARRAY('value1', 'value2')将创建一个包含两个元素的JSON数组现在,让我们将这些函数应用到您的场景中来修改"uid":"1"的值:

在上面的查询中,your_table是包含inspection_img字段的表名。JSON_REPLACE()函数用于替换JSON字符串中的键值对。'$[0].uid'表示JSON数组中的第一个对象的uid键。将'new_value'替换为您想要的新值。

请注意,上述查询仅会更新包含"uid":"1"的记录。如果您要更新多个记录,您可以根据需要构建更复杂的查询条件。

确保在执行此类操作之前,始终备份数据以防止意外情况发生。此外,如果您的表中有大量记录或JSON字段较大,这样的更新操作可能会对性能产生一定影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值