mysql中对比 JSON_VALUE 与 JSON_QUERY
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 或错误 | 
| $.b | NULL 或错误 | [1,2] | 
| $.b[0] | 1 | NULL 或错误 | 
| $.c | hi | NULL 或错误 | 
例二:再举一个实际的例子,两种函数用法如下:
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":""}
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号