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

MySQL 语句解析json字符串

       

目录

1. 提取 JSON 值

2. 提取嵌套 JSON 值

3. 提取 JSON 数组中的值

4. 更新 JSON 值

5. 检查 JSON 值是否存在

6. 将 JSON 数据转换为表格形式

实际案例


       在 MySQL 5.7 及以上版本中,可以使用内置的 JSON 函数来解析 JSON 格式的字符串。以下是一些常见的操作和示例:

1. 提取 JSON 值

使用 JSON_EXTRACT() 函数或 -> 操作符从 JSON 字符串中提取值。

示例:

sql复制

SELECT JSON_EXTRACT(json_column, '$.key') AS value
FROM table_name;

或者使用 -> 操作符:

SELECT json_column->'$.key' AS value
FROM table_name;

解释:

  • json_column 是存储 JSON 数据的列名。

  • '$.key' 是 JSON 路径表达式,用于指定要提取的键。

2. 提取嵌套 JSON 值

如果 JSON 数据是嵌套的,可以使用更复杂的路径表达式。

示例:

SELECT JSON_EXTRACT(json_column, '$.nested.key') AS nested_value
FROM table_name;

3. 提取 JSON 数组中的值

如果 JSON 数据是数组,可以使用索引来提取特定位置的值。

示例:

SELECT JSON_EXTRACT(json_column, '$[0]') AS first_element
FROM table_name;

4. 更新 JSON 值

使用 JSON_SET() 函数来更新 JSON 数据中的值。

示例:

UPDATE table_name
SET json_column = JSON_SET(json_column, '$.key', 'new_value')
WHERE condition;

5. 检查 JSON 值是否存在

使用 JSON_CONTAINS() 函数来检查 JSON 数据中是否包含某个值。

示例:

SELECT *
FROM table_name
WHERE JSON_CONTAINS(json_column, '"value"', '$.key');

6. 将 JSON 数据转换为表格形式

如果需要将 JSON 数据转换为表格形式,可以结合 JSON_EXTRACT()CROSS JOIN 来实现。

示例:

SELECT 
  JSON_EXTRACT(json_column, '$.key1') AS key1,
  JSON_EXTRACT(json_column, '$.key2') AS key2
FROM table_name;

实际案例

假设有一个表 users,其中有一列 profile 存储 JSON 数据:

idprofile
1{"name": "Alice", "age": 30}
2{"name": "Bob", "age": 25}

提取 name 字段:

SELECT id, JSON_EXTRACT(profile, '$.name') AS name
FROM users;

结果:

idname
1Alice
2Bob

提取 age 字段:

SELECT id, profile->'$.age' AS age
FROM users;

结果:

idage
130
225

更新 age 字段:

UPDATE users
SET profile = JSON_SET(profile, '$.age', 31)
WHERE id = 1;

检查 name 是否为 "Alice":

SELECT *
FROM users
WHERE JSON_CONTAINS(profile, '"Alice"', '$.name');

其他资料:

StarRocks语句解析json字符串的方法-CSDN博客

MySQL时间函数详解-CSDN博客

MySQL中生成随机数的方法-CSDN博客

mysql定时任务-事件调度器(Event Scheduler)_mysql event scheduler-CSDN博客

修改mysql的group_concat函数长度限制,解决数据莫名其妙丢失问题_修改group concat长度之后无效-CSDN博客

相关文章:

  • 基于SpringBoot的“交通旅游订票系统”的设计与实现(源码+数据库+文档+PPT)
  • 【笔记】在windows使用docker管理mysql版本
  • JS—异步编程:3分钟掌握异步编程
  • cordova android12+升级一些配置注意事项
  • 3. 轴指令(omron 机器自动化控制器)——>MC_CamOut
  • 【Mac】npm error Error: EACCES: permission denied, mkdir‘/Users/...
  • 从零到一:ESP32与豆包大模型的RTC连续对话实现指南
  • 【Git 暂存操作指南2】
  • 网盘解析工具1.3.0,修改了一些bug,建议更新到此版本
  • 发票管理自动化-发票查验接口让财务告别繁琐的核验流程
  • Android面试总结之Glide源码级理解
  • Android 动态设置默认Launcher(默认应用 电话-短信-浏览器-主屏幕应用))
  • MCP Server 实现一个 天气查询
  • 【C语言】分支与循环(上)
  • linux打包前端vue,后端springboot项目
  • CentOS 7 挂载与卸载文件系统笔记
  • 物联网中的物模型是什么意思,在嵌入式软件开发中如何体现?
  • 树——构造和遍历问题——面试专题
  • 屏幕后处理Post-Processing安装及使用
  • 如何学习并使用C++
  • 5.19中国旅游日,上海56家景区景点限时门票半价
  • 马云再次现身阿里打卡创业公寓“湖畔小屋”,鼓励员工坚持创业精神
  • 习近平会见塞尔维亚总统武契奇
  • 扶桑谈|素称清廉的石破茂被曝受贿,日本政坛或掀起倒阁浪潮
  • 水中托举救出落水孩童后遇难,42岁退役军人高武被确认为见义勇为
  • 当年的你,现在在哪里?——新民晚报杯40周年寻人启事