遇到问题:
在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函数:
-
JSON_EXTRACT()
: 用于提取JSON字段中的特定键值对。它接受两个参数,第一个参数是JSON字段,第二个参数是要提取的键的路径。例如,JSON_EXTRACT(inspection_img, '$[0].uid')
将提取JSON数组中第一个对象的uid键的值。 -
JSON_REPLACE()
: 用于替换JSON字段中的特定键值对。它接受三个或更多参数,第一个参数是JSON字段,后面的参数是要替换的键和值对。例如,JSON_REPLACE(inspection_img, '$[0].uid', 'new_value')
将替换JSON数组中第一个对象的uid键的值为'new_value'。 -
JSON_SET()
: 用于设置JSON字段中的特定键值对。它接受三个或更多参数,第一个参数是JSON字段,后面的参数是要设置的键和值对。如果键已存在,则替换其值;如果键不存在,则添加新的键值对。例如,JSON_SET(inspection_img, '$[0].uid', 'new_value')
将设置JSON数组中第一个对象的uid键的值为'new_value'。 -
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字段较大,这样的更新操作可能会对性能产生一定影响。