网站首页 > 文章精选 正文
JSON_EXTRACT函数用于从JSON文档中提取一个或多个值。
基本语法
JSON_EXTRACT函数的基本语法如下:
JSON_EXTRACT(json_doc, path [, path] ...)
- json_doc:要从中提取值的JSON文档。
- path:一个或多个路径表达式,用于指定要提取的值的位置。路径表达式以$开头,表示JSON文档的根。路径表达式可以使用点.访问对象属性,使用方括号[]访问数组元素,并且可以组合使用点和方括号访问嵌套结构。
路径表达式
路径表达式使用类似于JavaScript的对象和数组访问语法:
- 对象属性:使用点.访问,例如$.name。
- 数组元素:使用方括号[]访问,例如$。
- 嵌套结构:可以组合使用点和方括号,例如$.address.street或$.items.name
解析json字符串
SELECT JSON_EXTRACT (content, '$.object.item.id') ; -- 1542348252537
SELECT JSON_EXTRACT(JSON_EXTRACT(JSON_EXTRACT (content, '$.object'),'$.item'),'$.id') ; -- 1542348252537
SELECT JSON_EXTRACT (content, '$object$item$id') ; -- ERROR 3143 (42000): Invalid JSON path expression. The error is around character position 1.
SELECT JSON_EXTRACT(JSON_EXTRACT(JSON_EXTRACT (content, '$object'),'$item'),'$id') ; -- ERROR 3143 (42000): Invalid JSON path expression. The error is around character position 1.
解析json数组
SELECT json_extract(json_extract(json_extract(
'{
"object": {
"items": [{
"type": "image",
"id": 1542348252537
},
{
"type": "image",
"id": 1542348263477
}]
}
}'
, '$.object'),'$.items'), '$[0].id'); -- 1542348252537
SELECT json_extract(json_extract(
'{
"object": {
"items": [{
"type": "image",
"id": 1542348252537
},
{
"type": "image",
"id": 1542348263477
}]
}
}'
, '$.object.items'), '$[0].id'); -- 1542348252537
SELECT json_extract(
'{
"object": {
"items": [{
"type": "image",
"id": 1542348252537
},
{
"type": "image",
"id": 1542348263477
}]
}
}'
, '$.object.items.$[0].id'); -- NULL
SELECT json_extract(
'{
"object": {
"items": [{
"type": "image",
"id": 1542348252537
},
{
"type": "image",
"id": 1542348263477
}]
}
}'
, '$.object.items.[0].id'); -- ERROR 3143 (42000): Invalid JSON path expression. The error is around character position 15.
SELECT json_extract(
'{
"object": {
"items": [{
"type": "image",
"id": 1542348252537
},
{
"type": "image",
"id": 1542348263477
}]
}
}'
, '$.object.items[0].id'); -- 1542348252537
end
猜你喜欢
- 2025-05-09 面试必问的 MySQL 四种隔离级别,看完吊打面试官
- 2025-05-09 面试官:mysql自增长id用完了怎么办?这是我见过最中肯的答案了
- 2025-05-09 阿里面试:MySQL Binlog有哪些格式?底层原理?优缺点?
- 2025-05-09 1.5万字+30张图盘点程序员面试必会MySQL索引常见的11个知识点
- 2025-05-09 面试中的老大难-mysql事务和锁,一次性讲清楚
- 2025-05-09 手把手指导Linux系统centos7安装数据库MySQL5.7
- 2025-05-09 面试官问我MySQL索引为啥用B+树?我让他去问作者
- 2025-05-09 MySQL面试题:自增ID达到上限了会出现什么问题?
- 2025-05-09 MySQL索引失效问题,看完手撕面试官
- 2025-05-09 阿里面试:MySQL死锁的原因?解决方案有哪些?
- 最近发表
-
- Vue3+Django4全新技术实战全栈项目|高清完结
- 工厂模式+策略模式消除 if else 实战
- 每天一个 Python 库:httpx异步请求,让接口测试飞起来
- 如何高效实现API接口的自动化测试?
- 前端工程化:从“手忙脚乱”到“从容协作”的进化记
- 使用C#创建服务端Web API(c#开发web服务器)
- SpringBoot之旅第四篇-web开发(springboot做web项目)
- 一文读懂SpringMVC(一文读懂新型政策性金融工具)
- Rust Web编程:第十二章 在 Rocket 中重新创建我们的应用程序
- Apache Druid 数据摄取——本地数据和kafka流式数据 一篇文章看懂
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)