mysql中对比 JSON_VALUE 与 JSON_QUERY

2023-05-16

1. JSON概述

MySQL里的json分为json array和json object。 $表示整个json对象,在索引数据时用下标(对于json array,从0开始)或键值(对于json object,含有特殊字符的key要用"括起来,比如$."my name")。

例如:[3, {"a": [5, 6], "b": 10}, [99, 100]],那么:

$[0]:3

$[1]: {"a": [5, 6], "b": 10}

$[2] :[99, 100]

$[3] : NULL

$[1].a:[5, 6]

$[1].a[1]:6

$[1].b:10

$[2][0]:99

 

2.JSON_VALUE 和 JSON_QUERY 之间的主要区别在于 JSON_VALUE 返回标量值,而 JSON_QUERY 返回数组或对象。

 

例一:请参考以下示例 JSON 文本。

JSON复制
{
    "a": "[1,2]",
    "b": [1, 2], "c": "hi" } 

在此示例 JSON 文本中,数据成员“a”和“c”是字符串值,而数据成员“b”是数组。 JSON_VALUE 和 JSON_QUERY 返回以下结果:

路径JSON_VALUE 返回JSON_QUERY 返回
$NULL 或错误{ "a": "[1,2]", "b": [1,2], "c":"hi"}
$.a[1,2]NULL 或错误
$.bNULL 或错误[1,2]
$.b[0]1NULL 或错误
$.chiNULL 或错误

 

 

 

 

 

 

 

 

 

例二:再举一个实际的例子,两种函数用法如下:


SELECT JSON_VALUE(inverstor_info_json, '$.inverstorScore.addrFlagScore') FROM `t_customer_score` WHERE id= 47178;
SELECT JSON_QUERY(inverstor_info_json, '$.famous') FROM `t_customer_score` WHERE id= 47178;  

inverstor_info_json存储文本格式举例如下:  

{"addrExist":"addrExist_1","addrFlag":"addrFlag_1","adjustScore":0,"best":0,"famous":0,"financing":"financing_1","incubator":"incubator_2","inverstorScore":{"addrExistScore":"0","addrFlagScore":"0","financingScore":"0.0","incubatorScore":"0"},"isStrategic":0,"noPhone":0,"professional":0,"straBest":0,"straFamous":0,"straProfessional":0,"strategicInvestment":""}  

 

 

 

 

转载于:https://www.cnblogs.com/xiyouzhi/p/9914271.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql中对比 JSON_VALUE 与 JSON_QUERY 的相关文章

随机推荐