mysql中json_merge函数的使用?

需求描述:

  通过mysql中的json_merge函数,可以将多个json对象合并成一个对象

操作过程:

1.查看一张包含json列的表

mysql> select * from tab_json;
+----+-----------------------------------------------------------------------------------+
| id | data                                                                              |
+----+-----------------------------------------------------------------------------------+
|  1 | {"Tel": "132223232444", "name": "david", "address": "Beijing"}                    |
|  2 | {"Tel": "13390989765", "name": "Mike", "address": "Guangzhou"}                    |
|  3 | {"names": "Smith"}                                                                |
|  4 | {"names": "Smith", "address": "Beijing"}                                          |
|  5 | {"names": "Smith", "address": "Beijing", "birthday": "2018-09-09"}                |
|  6 | {"Max": "true", "names": "Smith", "address": "Beijing", "birthday": "2018-09-09"} |
|  7 | {"max": "true", "names": "Smith", "address": "Beijing", "birthday": "2018-09-09"} |
|  8 | {"oax": "true", "names": "Smith", "address": "Beijing", "birthday": "2018-09-09"} |
+----+-----------------------------------------------------------------------------------+
8 rows in set (0.00 sec)

2.将names的值与address的值进行合并

mysql> select json_extract(data,'$.names'),json_extract(data,'$.address') from tab_json;
+------------------------------+--------------------------------+
| json_extract(data,'$.names') | json_extract(data,'$.address') |
+------------------------------+--------------------------------+
| NULL                         | "Beijing"                      |
| NULL                         | "Guangzhou"                    |
| "Smith"                      | NULL                           |
| "Smith"                      | "Beijing"                      |
| "Smith"                      | "Beijing"                      |
| "Smith"                      | "Beijing"                      |
| "Smith"                      | "Beijing"                      |
| "Smith"                      | "Beijing"                      |
+------------------------------+--------------------------------+
8 rows in set (0.00 sec)

mysql> select json_merge(json_extract(data,'$.names'),json_extract(data,'$.address')) from tab_json;
+-------------------------------------------------------------------------+
| json_merge(json_extract(data,'$.names'),json_extract(data,'$.address')) |
+-------------------------------------------------------------------------+
| NULL                                                                    |
| NULL                                                                    |
| NULL                                                                    |
| ["Smith", "Beijing"]                                                    |
| ["Smith", "Beijing"]                                                    |
| ["Smith", "Beijing"]                                                    |
| ["Smith", "Beijing"]                                                    |
| ["Smith", "Beijing"]                                                    |
+-------------------------------------------------------------------------+
8 rows in set (0.00 sec)

3.如果多个对象含有相同的key,那么也会进行合并为具体的values

mysql> SELECT JSON_MERGE('{"a": 1, "b": 2}', '{"c": 3, "a": 4}');
+----------------------------------------------------+
| JSON_MERGE('{"a": 1, "b": 2}', '{"c": 3, "a": 4}') |
+----------------------------------------------------+
| {"a": [1, 4], "b": 2, "c": 3}                      |
+----------------------------------------------------+
1 row in set (0.00 sec)

备注:将两个对象的值合并成一个,a这个key的值也增加到了2个.

 

文档创建:2018年6月6日17:49:18

转载于:https://www.cnblogs.com/chuanzhang053/p/9146466.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值