当前位置: 首页 > news >正文

【MySQL】MySQL中的函数之JSON_REPLACE

在 MySQL 中,JSON_REPLACE() 函数用于在 JSON 文档中替换现有的值。如果指定的路径不存在,则 JSON_REPLACE() 不会修改 JSON 文档。如果需要添加新的键值对,可以使用 JSON_SET() 函数。

基本语法

JSON_REPLACE(json_doc, path, val[, path, val] ...)
  • json_doc: 要修改的 JSON 文档。
  • path: 要替换的值的路径。
  • val: 要设置的新值。

示例

假设有一个表 users,其中有一个字段 data 存储了用户的 JSON 数据:

CREATE TABLE users (id INT PRIMARY KEY,data JSON
);INSERT INTO users (id, data) VALUES
(1, '{"name": "Alice", "age": 30, "city": "New York"}'),
(2, '{"name": "Bob", "age": 25, "city": "Los Angeles"}');
示例 1: 替换单个值

假设我们要将 id 为 1 的用户的年龄从 30 改为 35:

UPDATE users
SET data = JSON_REPLACE(data, '$.age', 35)
WHERE id = 1;

查询结果:

SELECT * FROM users;

输出结果:

+----+--------------------------------------------------+
| id | data                                             |
+----+--------------------------------------------------+
| 1  | {"name": "Alice", "age": 35, "city": "New York"} |
| 2  | {"name": "Bob", "age": 25, "city": "Los Angeles"}|
+----+--------------------------------------------------+
示例 2: 替换多个值

假设我们要将 id 为 2 的用户的年龄从 25 改为 30,并将城市从 “Los Angeles” 改为 “San Francisco”:

UPDATE users
SET data = JSON_REPLACE(data, '$.age', 30, '$.city', 'San Francisco')
WHERE id = 2;

查询结果:

SELECT * FROM users;

输出结果:

+----+-----------------------------------------------------------+
| id | data                                                      |
+----+-----------------------------------------------------------+
| 1  | {"name": "Alice", "age": 35, "city": "New York"}          |
| 2  | {"name": "Bob", "age": 30, "city": "San Francisco"}       |
+----+-----------------------------------------------------------+
示例 3: 替换嵌套值

假设 JSON 数据中包含嵌套的对象:

INSERT INTO users (id, data) VALUES
(3, '{"name": "Charlie", "age": 35, "address": {"street": "123 Main St", "city": "Chicago"}}');

我们可以替换嵌套对象 address 中的 street

UPDATE users
SET data = JSON_REPLACE(data, '$.address.street', '456 Elm St')
WHERE id = 3;

查询结果:

SELECT * FROM users;

输出结果:

+----+-----------------------------------------------------------------+
| id | data                                                            |
+----+-----------------------------------------------------------------+
| 1  | {"name": "Alice", "age": 35, "city": "New York"}                |
| 2  | {"name": "Bob", "age": 30, "city": "San Francisco"}             |
| 3  | {"name": "Charlie", "age": 35, "address": {"street": "456 Elm St", "city": "Chicago"}} |
+----+-----------------------------------------------------------------+
示例 4: 替换数组中的值

假设 JSON 数据中包含一个数组:

INSERT INTO users (id, data) VALUES
(4, '{"name": "David", "age": 40, "hobbies": ["reading", "traveling", "cooking"]}');

我们可以替换数组 hobbies 中的第一个值:

UPDATE users
SET data = JSON_REPLACE(data, '$.hobbies[0]', 'writing')
WHERE id = 4;

查询结果:

SELECT * FROM users;

输出结果:

+----+-----------------------------------------------------------------------+
| id | data                                                                  |
+----+-----------------------------------------------------------------------+
| 1  | {"name": "Alice", "age": 35, "city": "New York"}                      |
| 2  | {"name": "Bob", "age": 30, "city": "San Francisco"}                   |
| 3  | {"name": "Charlie", "age": 35, "address": {"street": "456 Elm St", "city": "Chicago"}} |
| 4  | {"name": "David", "age": 40, "hobbies": ["writing", "traveling", "cooking"]} |
+----+-----------------------------------------------------------------------+

注意事项

  • 如果指定的路径不存在,JSON_REPLACE() 不会修改 JSON 文档。
  • 如果需要添加新的键值对,应使用 JSON_SET() 函数。
  • JSON_REPLACE() 只能替换现有路径的值,不能创建新路径。

组合使用

JSON_REPLACE() 通常与其他 JSON 函数结合使用,以便更灵活地处理 JSON 数据。例如,你可以先使用 JSON_EXTRACT() 提取值,然后使用 JSON_REPLACE() 修改值。

相关文章:

【MySQL】MySQL中的函数之JSON_REPLACE

在 MySQL 中,JSON_REPLACE() 函数用于在 JSON 文档中替换现有的值。如果指定的路径不存在,则 JSON_REPLACE() 不会修改 JSON 文档。如果需要添加新的键值对,可以使用 JSON_SET() 函数。 基本语法 JSON_REPLACE(json_doc, path, val[, path,…...

【大数据学习 | HBASE高级】hbase的API操作

首先引入hbase的依赖 <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifactId><version>2.4.13</version></dependency><dependency><groupId>org.slf4j<…...

C++(Qt)软件调试---内存泄漏分析工具MTuner (25)

C(Qt)软件调试—内存泄漏分析工具MTuner &#xff08;25&#xff09; 文章目录 C(Qt)软件调试---内存泄漏分析工具MTuner &#xff08;25&#xff09;[toc]1、概述&#x1f41c;2、下载MTuner&#x1fab2;3、使用MTuner分析qt程序内存泄漏&#x1f9a7;4、相关地址&#x1f41…...

python核心语法

目录 核⼼语法第⼀节 变量0.变量名规则1.下⾯这些都是不合法的变量名2.关键字3.变量赋值4.变量的销毁 第⼆节 数据类型0.数值1.字符串2.布尔值(boolean, bool)3.空值 None 核⼼语法 第⼀节 变量 变量的定义变量就是可变的量&#xff0c;对于⼀些有可能会经常变化的数据&#…...

MATLAB用CNN-LSTM神经网络的语音情感分类深度学习研究

全文链接&#xff1a;https://tecdat.cn/?p38258 在语音处理领域&#xff0c;对语音情感的分类是一个重要的研究方向。本文将介绍如何通过结合二维卷积神经网络&#xff08;2 - D CNN&#xff09;和长短期记忆网络&#xff08;LSTM&#xff09;构建一个用于语音分类任务的网络…...

智能网页内容截图工具:AI助力内容提取与可视化

我们每天都会接触到大量的网页内容。然而&#xff0c;如何从这些内容中快速提取关键信息&#xff0c;并有效地进行整理和分享&#xff0c;一直是困扰我们的问题。本文将介绍一款我近期完成的基于AI技术的智能网页内容截图工具&#xff0c;它能够自动分析网页内容&#xff0c;截…...

Axure设计之文本编辑器制作教程

文本编辑器是一个功能强大的工具&#xff0c;允许用户在图形界面中创建和编辑文本的格式和布局&#xff0c;如字体样式、大小、颜色、对齐方式等&#xff0c;在Web端实际项目中&#xff0c;文本编辑器的使用非常频繁。以下是在Axure中模拟web端富文本编辑器&#xff0c;来制作文…...

【MyBatis源码】深入分析TypeHandler原理和源码

&#x1f3ae; 作者主页&#xff1a;点击 &#x1f381; 完整专栏和代码&#xff1a;点击 &#x1f3e1; 博客主页&#xff1a;点击 文章目录 原始 JDBC 存在的问题自定义 TypeHandler 实现TypeHandler详解BaseTypeHandler类TypeReference类型参考器43个类型处理器类型注册表&a…...

号卡分销系统,号卡系统,物联网卡系统源码安装教程

号卡分销系统&#xff0c;号卡系统&#xff0c;物联网卡系统&#xff0c;&#xff0c;实现的高性能(PHP协程、PHP微服务)、高灵活性、前后端分离(后台)&#xff0c;PHP 持久化框架&#xff0c;助力管理系统敏捷开发&#xff0c;长期持续更新中。 主要特性 基于Auth验证的权限…...

常用命令之LinuxOracleHivePython

1. 用户改密 passwd app_adm chage -l app_adm passwd -x 90 app_adm -> 执行操作后&#xff0c;app_adm用户的密码时间改为90天有效期--查看该euser用户过期信息使用chage命令 --chage的参数包括 ---m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。 ---M 密码…...

从dos上传shell脚本文件到Linux、麒麟执行报错“/bin/bash^M:解释器错误:没有那个文件或目录”

[rootkylin tmp]#./online_update_wars-1.3.0.sh ba51:./online_update_wars-1.3.0.sh:/bin/bash^M:解释器错误:没有那个文件或目录 使用scp命令上传文件到麒麟系统&#xff0c;执行shell脚本时报错 “/bin/bash^M:解释器错误:没有那个文件或目录” 解决方法&#xff1a; 执行…...

使用 Go 实现将任何网页转化为 PDF

在许多应用场景中&#xff0c;可能需要将网页内容转化为 PDF 格式&#xff0c;比如保存网页内容、生成报告、或者创建网站截图。使用 Go 编程语言&#xff0c;结合一些现有的库&#xff0c;可以非常方便地实现这一功能。本文将带你一步一步地介绍如何使用 Go 语言将任何网页转换…...

文件操作和IO

目录 一. 文件预备知识 1. 硬盘 2. 文件 (1) 概念 (2) 文件路径 (3) 文件类型 二. 文件操作 1. 文件系统操作 [1] File常见的构造方法 [2] File的常用方法 [3] 查看某目录下所有的目录和文件 2. 文件内容操作 (1) 打开文件 (2) 关闭文件 (3) 读文件 (4) 写文件 …...

【C++滑动窗口】1248. 统计「优美子数组」|1623

本文涉及的基础知识点 C算法&#xff1a;滑动窗口及双指针总结 LeetCode1248. 统计「优美子数组」 给你一个整数数组 nums 和一个整数 k。如果某个连续子数组中恰好有 k 个奇数数字&#xff0c;我们就认为这个子数组是「优美子数组」。 请返回这个数组中 「优美子数组」 的数…...

C语言导航 4.1语法基础

第四章 顺序结构程序设计 第一节 语法基础 语句概念 语句详解 程序详解 4.1.1语句概念 说明&#xff1a;构成高级语言源程序的基本单位。 特征&#xff1a;在C语言中语句以分号作为结束标志。 分类&#xff1a; &#xff08;1&#xff09;简单语句&#xff1a;空语句、…...

使用 Python 和 Py2Neo 构建 Neo4j 管理脚本

Neo4j 是一个强大的图数据库&#xff0c;适合处理复杂的关系型数据。借助 Python 的 py2neo 库&#xff0c;我们可以快速实现对 Neo4j 数据库的管理和操作。本文介绍一个功能丰富的 Python 脚本&#xff0c;帮助用户轻松管理 Neo4j 数据库&#xff0c;包含启动/停止服务、清空数…...

Centos 7 安装wget

Centos 7 安装wget 最小化安装Centos 7 的话需要上传wget rpm包之后再路径下安装一下。rpm包下载地址&#xff08;http://mirrors.163.com/centos/7/os/x86_64/Packages/&#xff09; 1、使用X-ftp 或者WinSCP等可以连接上传的软件都可以首先连接服务器&#xff0c;这里我用的…...

定时器的小应用

第一个项目 第一步&#xff0c;RCC开启时钟&#xff0c;这个基本上每个代码都是第一步&#xff0c;不用多想&#xff0c;在这里打开时钟后&#xff0c;定时器的基准时钟和整个外设的工作时钟就都会同时打开了 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);第二步&…...

linux企业中常用NFS、ftp服务

1.静态ip配置 修改ip地址为静态vim /etc/sysconfig/network-scripts/ifcfg-enxxx BOOTPROTO"static" IPADDR192.168.73.10 GATEWAY192.168.73.2 # 该配置与虚拟机网关一致 NETMASK255.255.255.0重启网卡&#xff1a;systemctl restart network.service ping不通域名…...

数据结构与算法分析模拟试题及答案5

模拟试题&#xff08;五&#xff09; 一、单项选择题&#xff08;每小题 2 分&#xff0c;共20分&#xff09; &#xff08;1&#xff09;队列的特点是&#xff08;   &#xff09;。 A&#xff09;先进后出 B&#xff09;先进先出 C&#xff09;任意位置进出 D&#xff0…...

淘宝要接入AI购物助手:以后买东西,可能不是搜索,而是“让AI帮你挑”

最近AI圈有一个很值得关注的新热点。据路透社5月10日报道&#xff0c;阿里巴巴正准备把通义千问Qwen接入淘宝&#xff0c;让用户可以通过和AI聊天的方式浏览、比较和购买商品&#xff0c;而不是像以前那样自己一个个翻商品列表。报道还提到&#xff0c;Qwen应用将接入淘宝和天猫…...

爆单实操课:从3C到美妆,跨境商家如何用AI神器搞定TikTok本土化

每天都有无数跨境卖家在各大社群里发问&#xff1a;怎么用ai生成带货视频&#xff0c;有哪些工具比较好用&#xff1f; 在 TikTok 这个极度依赖内容爆发的平台上&#xff0c;不同类目的产品对视频素材的需求千差万别。靠人工剪辑不仅效率低&#xff0c;且极难跨越本土化语言的障…...

Windows下Python包管理权限踩坑实录:从WinError 5到WinError 32的完整解决流程

Windows下Python包管理权限问题深度解析&#xff1a;从WinError 5到WinError 32的实战指南 作为一名长期在Windows平台进行Python开发的工程师&#xff0c;我深刻理解文件权限问题带来的困扰。特别是当你在紧急项目交付前夜&#xff0c;突然遭遇PermissionError: [WinError 5]或…...

AI编程助手效率革命:结构化配置与提示词工程实战

1. 项目概述&#xff1a;一个为AI编程时代量身定制的开发者工具箱如果你和我一样&#xff0c;日常开发已经离不开像 Cursor 和 Claude 这样的 AI 编程助手&#xff0c;那你肯定也遇到过类似的困扰&#xff1a;每次开启一个新项目&#xff0c;或者在不同项目间切换时&#xff0c…...

Selenium自动化ChatGPT:绕过API限制,实现Web端高效批量交互

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“Michelangelo27/chatgpt_selenium_automation”。光看名字&#xff0c;你大概能猜到它想做什么&#xff1a;用Selenium自动化操作ChatGPT。这听起来是不是有点“用大炮打蚊子”的感觉&#xff1f;毕…...

告别PLC!用Python+ModbusTCP玩转FactoryIO仿真(附完整代码与可视化界面)

PythonModbusTCP工业仿真实战&#xff1a;从零构建FactoryIO智能分拣系统 工业自动化领域正在经历一场静默革命——传统PLC的垄断地位首次被通用编程语言打破。去年某国际自动化展会上&#xff0c;一位工程师仅用200行Python代码就复现了某品牌PLC的复杂流水线控制逻辑&#xf…...

别再只点灯了!用ESP32和WebServer库做个智能家居控制面板原型(附完整代码)

用ESP32打造智能家居控制面板&#xff1a;从网页控制到硬件交互实战 想象一下&#xff0c;清晨醒来无需下床&#xff0c;轻点手机就能打开窗帘、调节灯光&#xff1b;离家时一键关闭所有电器&#xff0c;还能实时查看家中温湿度——这些看似未来的场景&#xff0c;如今用一块ES…...

避坑指南:用Qt为STM32项目写上位机时,我遇到的5个串口和界面难题

避坑指南&#xff1a;用Qt为STM32项目写上位机时&#xff0c;我遇到的5个串口和界面难题 第一次用Qt给STM32开发上位机时&#xff0c;我以为串口通信不过是简单的数据收发&#xff0c;界面设计拖拖控件就能搞定。直到项目进度被各种诡异bug拖慢两周后&#xff0c;才意识到自己踩…...

全景视频会议核心技术解析:从200°视场角到实时图像拼接

1. 项目概述&#xff1a;全景视频会议如何从概念走向现实视频会议这玩意儿&#xff0c;我们搞通信和消费电子这行的&#xff0c;这些年见得多了。从最早模糊不清的像素块&#xff0c;到后来高清但视角固定的摄像头&#xff0c;大家总觉得少了点什么。没错&#xff0c;少的就是那…...

AI和大模型——拟合

一、拟合 Fitting,中文翻译成拟合&#xff0c;这个翻译还是比较贴切的。怎么理解拟合呢&#xff1f;其实非常好理解&#xff0c;如果接受过九年义务教育&#xff0c;基本都有极限或微积分的概念。有没有想起过积分中用高低不等的小矩形来拼凑出曲线面的面积&#xff0c;那个过程…...