mysql json value_MySQL 8.0.21 JSON_VALUE() 介绍-阿里云开发者社区

本文介绍了MySQL 8.0.21新增的JSON_VALUE()函数,该函数用于从JSON数据中提取标量值并以SQL值的形式返回。通过示例展示了如何使用该函数进行数据提取、格式化和在WHERE子句中的应用,以及利用RETURNING子句转换数据类型。同时提到了该函数在创建索引时的作用。
摘要由CSDN通过智能技术生成

MySQL 8.0.21发布了,其中一个新特性是JSON_VALUE()函数。主要的动机是简化JSON数据的索引创建,但是还有更多的原因。

JSON_VALUE()在JSON数据中查找指定的标量JSON值,并将其作为SQL值返回。

例子,我将使用mysql_x示例数据库数据作为示例。让我们从life expectancy数据开始。

SELECT JSON_EXTRACT(doc, "$.demographics.LifeExpectancy") AS raw

FROM countryinfo

LIMIT 4;

+--------------------+

| raw |

+--------------------+

| 78.4000015258789 |

| 45.900001525878906 |

| 38.29999923706055 |

| 76.0999984741211 |

+--------------------+

这是一个很棒的信息,但是用眼睛看起来不是那么舒服

我们可以使用JSON_VALUE()使它对我们看起来说更容易一些

SELECT

JSON_VALUE(doc, "$.demographics.LifeExpectancy" RETURNING DECIMAL(6,2)) AS trimmed FROM countryinfo

LIMIT 4;

+---------+

| trimmed |

+---------+

| 78.40 |

| 45.90 |

| 38.30 |

| 76.10 |

+---------+

它在WHERE子句中非常有用。在本例中没有RETURNING子句。

SELECT doc->"$.Name"

FROM countryinfo

WHERE JSON_VALUE(doc, "$.demographics.LifeExpectancy"

RETURNING DECIMAL(6,3)) > 80.1;

+---------------+

| doc->"$.Name" |

+---------------+

| "Andorra" |

| "Japan" |

| "Macao" |

| "San Marino" |

+---------------+

可选的RETURN子句将您的数据转换为FLOAT、DOUBLE、DECIMAL、SIGNED、

UNSIGNED, DATE, TIME, DATETIME, CHAR或JSON, 甚至还有on empty和on error子句。

SELECT JSON_VALUE('{firstname:"John"}', '$.lastname'

DEFAULT 'No last name found' ON ERROR) AS "Last Name";

+--------------------+

| Last Name |

+--------------------+

| No last name found |

+--------------------+

当然,它可以用来帮助定义索引。

CREATE TABLE xdemo (j JSON,

x INTEGER,

key((json_value(j, '$.id')))

);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值