mysql中json_object函数的使用?
需求说明:
今天看了json_object函数的使用,在此记录下使用过程
操作过程:
1.使用json_object函数将一个键值对列表转换成json对象
mysql> select json_object('names','David'); #将一个键值对转换成json对象
+------------------------------+
| json_object('names','David') |
+------------------------------+
| {"names": "David"} |
+------------------------------+
1 row in set (0.00 sec) mysql> select json_object('names','David','adress','Beijing'); #将两个键值对转换成json对象
+-------------------------------------------------+
| json_object('names','David','adress','Beijing') |
+-------------------------------------------------+
| {"names": "David", "adress": "Beijing"} |
+-------------------------------------------------+
1 row in set (0.00 sec) mysql> select json_object('names','David','adress','Beijing','Tel',13245323345);
+-------------------------------------------------------------------+
| json_object('names','David','adress','Beijing','Tel',13245323345) |
+-------------------------------------------------------------------+
| {"Tel": 13245323345, "names": "David", "adress": "Beijing"} |
+-------------------------------------------------------------------+
1 row in set (0.00 sec) mysql> select json_object('names','David','adress','Beijing','Tel'); #json_object中的参数如果是奇数个也会报错
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'json_object' mysql> select json_object('names','David','adress','Beijing',NULL,13240133398); #如果键值对中的key是NULL则会报错
ERROR 3158 (22032): JSON documents may not contain NULL member names. mysql> select json_object('names','David','adress','Beijing','Tel',1324053333,'names','Mike'); #如果键值对中,存在多个key值相同,那么后面的key就会被丢弃,只保留第一个出现的key
+---------------------------------------------------------------------------------+
| json_object('names','David','adress','Beijing','Tel',1324053333,'names','Mike') |
+---------------------------------------------------------------------------------+
| {"Tel": 1324053333, "names": "David", "adress": "Beijing"} |
+---------------------------------------------------------------------------------+
1 row in set (0.00 sec) mysql> select json_object('names','David', 'adress','Beijing','Tel',1324053333,'names','Mike'); #如果key,values之间有空格也会将空格丢弃,主要是为了提升查找的性能
+-------------------------------------------------------------------------------------+
| json_object('names','David', 'adress','Beijing','Tel',1324053333,'names','Mike') |
+-------------------------------------------------------------------------------------+
| {"Tel": 1324053333, "names": "David", "adress": "Beijing"} |
+-------------------------------------------------------------------------------------+
1 row in set (0.00 sec) mysql> select json_object('names','David', 'adress', 'Beijing','Tel',1324053333,'names','Mike');
+-----------------------------------------------------------------------------------------+
| json_object('names','David', 'adress', 'Beijing','Tel',1324053333,'names','Mike') |
+-----------------------------------------------------------------------------------------+
| {"Tel": 1324053333, "names": "David", "adress": "Beijing"} |
+-----------------------------------------------------------------------------------------+
1 row in set (0.00 sec) mysql> select json_object('names','David', 'adress', 'Beijing','Tel',1324053333, 'names','Mike');
+--------------------------------------------------------------------------------------------+
| json_object('names','David', 'adress', 'Beijing','Tel',1324053333, 'names','Mike') |
+--------------------------------------------------------------------------------------------+
| {"Tel": 1324053333, "names": "David", "adress": "Beijing"} |
+--------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
备注:json_object函数的作用,就是将一列键值对转换为json对象,同时呢,如果是奇数个参数,key为NULL都会报错,如果有多个key,相同的,则会将后面的key给丢弃掉,即使两个key对应的value不同.
2.使用json_object向表中插入数据
mysql> insert into tab_json values (null,json_object('names','David','adress','Beijing','Tel',1324053333,'names','Mike'));
Query OK, 1 row affected (0.01 sec) mysql> select * from tab_json;
+----+--------------------------------------------------------------------------+
| id | data |
+----+--------------------------------------------------------------------------+
| 1 | {"tel": 15046464563, "passcode": "654567"} |
| 2 | {"tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"} |
| 3 | {"Tel": 1324053333, "names": "David", "adress": "Beijing"} |
+----+--------------------------------------------------------------------------+
3 rows in set (0.00 sec)
3.基于一个表的数据,向json字段插入值
mysql> create table info(name varchar(30),address varchar(20),tel int); #创建一个普通表,用于存放基础信息
Query OK, 0 rows affected (0.08 sec) mysql> insert into info values ('Jack','Zhongguo',1323394);
Query OK, 1 row affected (0.00 sec) mysql> insert into info values ('Tobbo','Meiguo',132333394);
Query OK, 1 row affected (0.01 sec) mysql> insert into info values ('Hnana','Riben',3403234);
Query OK, 1 row affected (0.01 sec) mysql> select * from info;
+-------+----------+-----------+
| name | address | tel |
+-------+----------+-----------+
| Jack | Zhongguo | 1323394 |
| Tobbo | Meiguo | 132333394 |
| Hnana | Riben | 3403234 |
+-------+----------+-----------+
3 rows in set (0.00 sec) mysql> insert into tab_json select null,json_object('name',name,'address',address,'tel',tel) from info; #将info表中的数据通过json_object转换成json类型
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0 mysql> select * from tab_json;
+----+--------------------------------------------------------------------------+
| id | data |
+----+--------------------------------------------------------------------------+
| 1 | {"tel": 15046464563, "passcode": "654567"} |
| 2 | {"tel": 189776542, "name": "David", "olds": "12", "address": "Hangzhou"} |
| 3 | {"Tel": 1324053333, "names": "David", "adress": "Beijing"} |
| 4 | {"tel": 1323394, "name": "Jack", "address": "Zhongguo"} |
| 5 | {"tel": 132333394, "name": "Tobbo", "address": "Meiguo"} |
| 6 | {"tel": 3403234, "name": "Hnana", "address": "Riben"} |
+----+--------------------------------------------------------------------------+
6 rows in set (0.00 sec
文档创建时间:2018年6月6日15:43:19
mysql中json_object函数的使用?的更多相关文章
- mysql中now()函数的使用,还有oracle的sysdate,可能埋下的坑
mysql中now()函数的使用,还有oracle的sysdate 在需求中如果系统中药添加当前操作的时间那么很简单的一个操作在写sql的时候直接在这个字段对应的位置写上now()函数就可以了,这样就 ...
- MySQL中concat函数(连接字符串)
MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...
- Mysql中的函数
什么是函数 mysql中的函数与存储过程类似,都是一组SQL集: 与存储过程的区别 函数可以return值,存储过程不能直接return,但是有输出参数可以输出多个返回值: 函数可以嵌入到sql语句中 ...
- MySQL中concat函数
MySQL中concat函数使用方法:CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串.如有任何一个参数为NULL ,则返回值为 NULL. 注意:如果所有参数均为非二进制字符串 ...
- mysql中INSTR函数的用法
mysql中INSTR函数的用法 INSTR(字段名, 字符串) 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) SELECT * FROM tblTo ...
- MySQL中group_concat函数-和group by配合使用
MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔 ...
- MySQL中时间函数NOW()和SYSDATE()的区别
mysql中日期函数还是比较常用的.主要有NOW()和SYSDATE()两种,虽然都表示当前时间,但使用上有一点点区别. NOW()取的是语句开始执行的时间,SYSDATE()取的是动态的实时时间. ...
- mysql中的函数与存储过程
mysql中的函数:1 mysql下创建函数: 1.1 语法: delimiter $$ -- 设置分隔符,默认是; 设置成其他符号,让编译器知道我们函数编写的结束,此处设置成$$ create fu ...
- MySQL中group_concat函数深入理解
本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如select group_concat(name) . 一.MySQL中group_concat函数 完整的语法如下: gr ...
随机推荐
- Putty远程SSH免密码方式链接Linxu
1.首先确保Linxu服务器安装了ssh服务,可以输入ssh命令测试. ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spe ...
- OpenCV 图像处理的各种滤镜效果实现
引自:https://blog.csdn.net/column/details/stylizefliter.html 学习OpenCV:滤镜系列(15)——羽化(模糊边缘) 在PHOTOSHOP里,羽 ...
- python django查询12306火车票
逢年过节,想坐个高铁票,都得上12306去买票,但用过的都会发现,它会把临近站点的也筛出来了.但有时我们压根就不会考虑买到临近站点的. 另一方面,在购票高峰期,有可能你要的出发站到目的站都没有票了,这 ...
- 阿里云免费SSL证书绑定+sever2012 IIS配置
1.阿里云域名 2.点击证书 3.免费证书 4.下载证书 5.服务器-运行-mmc 进入制台程序 6.制台程序,选择菜单“文件"中的"添加/删除管理单元”-> “添加”,从“ ...
- linux 常见错误
yum.pid 已被锁定 rm -rf /var/run/yum.pid
- Visual Studio “14” CTP 3 Released
http://blogs.msdn.com/b/visualstudio/archive/2014/08/18/visual-studio-14-ctp-3-released.aspx Today w ...
- 机器学习 demo分西瓜
周老师的书,对神经网络写了一个小的Demo 是最简单的神经网络,只有一层的隐藏层. 这次练习依旧是对西瓜的好坏进行预测. 主要分了以下几个步骤 1.数据预处理 对西瓜的不同特性进行数学编码表示(0~1 ...
- USB学习笔记连载(十三):keil的配置环境
在对USB设备的驱动名字进行更改时,需要利用keil软件对固件进行修改,并生成 .iic 文件烧录到CY7C68013A所带的外部EEPROM中,keil生成的 .hex文件只能烧录到 Cypress ...
- 【3】JVM-OutOfMemory异常重现
JVM中常见的OOM,那么如何通过自己编写代码产生这些OOM异常呢?通过写代码重现异常,是为了避免在工作中写出有OOM BUG的代码.之前虽然看过相关文章,但是没自己写过这些代码,这次在编写的实际过程 ...
- 【转】【Android】Android Studio打包全攻略
项目写完了,现在需要把应用上传到市场,问题出现—怎么把代码变成.apk(Android的可安装文件).1. 创建签名文件2. 填写好签名参数3. 生成APK注意:签名的密码和密匙的密码注意保管,不要忘 ...