• MySql5.7 json查询


    create table t1(name json);
    insert into t1 values(’ {
    “hello”: “song”,
    “num”: 111,
    “obj”: { “who”: “me”, “arr”: [ 1, 2, “three” ], “more”:“hey” },
    “bool”: true,
    “can”: false,
    “learning”: null,
    “chiness”: “中文”
    }' );

    mysql> select json_depth(name) from t1; 

    返回json文本的深度 输出结果----4;
    1 rows in set (0.02 sec)

    mysql> select json_length(name) from t1; 

    返回json文本的长度 输出结果----9
    1 rows in set (0.01 sec)

    mysql> select json_type(name) from t1; 

    返回json值得类型 输出结果----OBJECT
    1 rows in set (0.04 sec)

    mysql> SELECT JSON_VALID(‘hello’) a, JSON_VALID(‘“hello”’) b; 

    判读是否是合法的json类型 返回结果:a:0 b:1
    1 row in set (0.00 sec)

    mysql> select json_keys(name) as a from t1; 

    查看存储的json有哪些key 返回结果:array[
    'a'=> [“hello”, “link”, “can”, “num”, “bool”, “learning”, “notLink”, “obj”, “chiness”],
    ]
    1 rows in set (0.05 sec)

    mysql> select json_keys(name,’obj’) as a from t1; 

    查看obj有哪些key 返回结果:array['a' =>[“more”,“who”,“arr”]]
    5rowsinset(0.00sec)

    mysql>select jsonsearch(name,′one′,′me′) as a from t1;

    查看第一次出现的位置 返回结果:array['“.obj.who”']

    mysql> select json_search(name,’all’,’%aaaaa%’) as a from t1; 

    查看所有包含aaaaa的位置 返回结果:aaaaa所在的key json_search(name,’all’,’%json%’)
    1rows in set (0.00 sec)

    mysql> select json_extract(name,’link[0]’) as a from t1; 

    抽取值 返回结果:查找的key所对应的value 如:“http://jsonview.com
    1 rows in set (0.00 sec)

    mysql> select json_extract(name,’obj[0].more[0]’) from t1; 

    抽取值 返回结果同上
    1 rows in set (0.00 sec)
    或者使用下面的方式

    mysql> select name,name->’key2’ from t1; 

    {“key1”: “value1”, “key2”: “value2”} | “value2” |

    mysql> select JSON_ARRAY_APPEND(name,’name’,’xxx’) from t1; 

    追加记录 在指定的json字段追加key-value 参数(字段名,key,value)

    mysql> select JSON_REMOVE(name,’name’) from t1; 

    删除json数据 参数(字段名,key)

    mysql> select JSON_set(name,’name’,’ooo’) from t1; 

    有就替换,没有就insert

    mysql> SELECT JSON_UNQUOTE(JSON_EXTRACT(name, ‘name’)) AS name from t1; 

    查询结果去掉双引号 返回字段name中的key为name的集合,没有“”
    因为 JSON 不同于字符串,所以如果用字符串和 JSON 字段比较,是不会相等的可以通过
    where key->'$.value'的形式去查询 ->和->>结果等效

  • 相关阅读:
    20个最佳的Java集合框架面试题目
    SSL/TLS 加密新纪元
    NServiceBus-日志
    NServiceBus-容器
    NServiceBus-网关和多站点分布
    NServiceBus-性能测试
    NServiceBus教程-持久化配置
    NServiceBus教程-持久化
    NServiceBus教程-NServiceBus和WCF
    NServiceBus教程-消息传递与处理
  • 原文地址:https://www.cnblogs.com/pfdltutu/p/9019444.html
Copyright © 2020-2023  润新知