MySQL使用JSON_EXTRACT获取json字符串某个键的值

这篇博客介绍了MySQL5.7版本新增的JSON_EXTRACT函数,用于从JSON字符串中提取特定键的值。示例展示了如何使用该函数获取'typeId'的值,并通过REPLACE函数去除双引号。此外,还提供了一个SQL查询示例,展示在实际场景中如何结合这两个函数使用,从数据表中提取并处理props列中的JSON数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSON_EXTRACT

MySQL5.7版本以后增加了JSON_EXTRACT函数,可用于获取json字符串中某个键的值。
示例:

JSON_EXTRACT('{"typeId": "001", "code": "C01"}', "$.typeId")

获取到的typeId值为"001",带有双引号,我们可以再用REPLACE函数去掉双引号。

REPLACE(JSON_EXTRACT('{"typeId": "001", "code": "C01"}', "$.typeId"), '"', '')

运用场景示例:

select id,name,billId,REPLACE(JSON_EXTRACT(pro.props, "$.typeId"),'"','') as type from
(select id,name,billId,props from template where mode=0 and store_id=109856) pro
<think>好的,用户想知道MySQL 5.6.16是否支持JSON_EXTRACT函数。首先,我记得MySQLJSON支持是在5.7版本之后才引入的,但需要确认具体细节。 先查一下MySQL 5.6的文档,看看有没有提到JSON函数。JSON_EXTRACT属于JSON处理的一部分,如果5.6版本没有JSON数据类型,那很可能也没有相关的函数。接着,检查版本发布历史,5.7.8版本开始支持JSON类型和相关函数,比如JSON_EXTRACT。而5.6.16是在这之前发布的,所以应该不支持。 可能用户在使用旧版本时遇到了JSON处理的问题,或者考虑升级到新版本。需要提醒用户,如果确实需要处理JSON数据,建议升级到5.7.8或更高版本。另外,可以提到在5.6中使用替代方法,比如字符串函数或者应用层处理,但效率可能不高。 最后,确认回答的准确性,避免误导用户。确保引用官方文档的信息,并给出明确的建议。</think>MySQL 5.6.16版本 **无法使用** `JSON_EXTRACT` 函数。以下是逐步分析: --- ### 1. **MySQL版本与JSON支持的关系** - **MySQL 5.7.8+** 是首个原生支持JSON数据类型的版本,并引入了 `JSON_EXTRACT`、`JSON_SET` 等JSON操作函数。 - **MySQL 5.6.x** 全系列版本(包括5.6.16)**未实现JSON支持**,既没有JSON数据类型,也没有相关函数。 --- ### 2. **验证方法** - **官方文档确认**:查阅 [MySQL 5.6文档](https://dev.mysql.com/doc/refman/5.6/en/) 可知,所有JSON函数均未在5.6版本中出现。 - **版本发布时间**:MySQL 5.6.16发布于2014年,而JSON支持功能于2015年随MySQL 5.7.8发布。 --- ### 3. **替代方案(针对MySQL 5.6)** 若需处理JSON格式数据,可尝试: - **升级到MySQL 5.7+**(推荐方案) - **手动解析字符串**:使用 `SUBSTRING`、`LOCATE` 等字符串函数提取内容 - **应用层处理**:在程序代码(如Python、Java)中解析JSON --- ### 4. **示例验证** 尝试在MySQL 5.6.16中执行: ```sql SELECT JSON_EXTRACT('{"name": "John"}', '$.name'); ``` 会直接报错: ```sql ERROR 1305 (42000): FUNCTION test.JSON_EXTRACT does not exist ``` --- ### 结论 **不建议在MySQL 5.6.x中使用JSON功能**。若项目依赖JSON操作,请升级至MySQL 5.7+或更高版本(如8.0)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值