数据库大师成长日记:将数据库SQL查询结果直接转为JSON

栏目: 数据库 · 发布时间: 7年前

内容简介:JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。SQL与JsonSQLServer对从2016开始添加了对Json数据的支持,我们可以很轻松的将查询的数据通过SQL语句直接转成Json格式,这对我们存储和交互数据提供了一个很好的途径。

JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

数据库大师成长日记:将数据库 <a href='https://www.codercto.com/topics/18630.html'>SQL</a> 查询结果直接转为JSON

SQL与Json

SQLServer对从2016开始添加了对Json数据的支持,我们可以很轻松的将查询的数据通过SQL语句直接转成Json格式,这对我们存储和交互数据提供了一个很好的途径。

今天我们就说说在SQLServer中如何将查询结果生成Json文本。

测试数据准备

为了测试效果,我们先准备测试数据,这里做一个简单的销售表:

declare @sale  table(  
 FName nvarchar(50),  
 FDistrict nvarchar(50),  
 FAmount decimal(28,10)  
); 
 
insert  into @sale  
values  
('张三','北京',20000),  
('张三','上海',50000),  
('张三','深圳',40000),  
('张三','广州',30000),  
('李四','北京',30000),  
('李四','上海',50000),  
('李四','深圳',40000),  
('李四','广州',10000); 
数据库大师成长日记:将数据库SQL查询结果直接转为JSON

演示数据

神奇的for json auto子句

在查询的from子句中加上 for json auto,查询结果就会自动转成json文本,这是最简单的一种转换方式。

select * from @sale  for json auto 

查询的结果就是json文本了。

数据库大师成长日记:将数据库SQL查询结果直接转为JSON

查询结果自动转成Json

把Json抓取出来,效果如下:

数据库大师成长日记:将数据库SQL查询结果直接转为JSON

自动导出的Json文本

是否感觉很神奇,如果您觉得SQLServer对导出Json的支持仅仅如此,那您就太小看微软了,下面我们再说说更强大的导出功能。

神奇的for json path子句

见识了神奇的for json auto子句,我们在看看另一个神奇的for json path子句,该子句使用列别名或列名来确定 JSON 输出中的键名称。

比如我们把“姓名”作为一个顶层节点,把区域和销售额设置一个上级节点“销售情况”:

select FName  as 姓名,  
 FDistrict as '销售情况.区域',  
 FAmount as '销售情况.金额'  
from @sale   
for json path 

查询的结果也是Json文本:

数据库大师成长日记:将数据库SQL查询结果直接转为JSON

查询结果自动转成Json

把Json抓取出来,效果如下:

数据库大师成长日记:将数据库SQL查询结果直接转为JSON

自动导出的Json文本

有没有发现什么不同?“销售情况.区域”、“销售情况.金额”中的点号,自动将“销售情况”作为了上级节点,“区域”和“金额”作为了子节点。

神奇的ROOT选项

对Json比较熟悉的朋友会发现,for json auto和for json path导出的Json直接是数组,每条记录就是一个数组元素,缺少了根节点,如果我们想要给Json加一个根节点要怎么做呢?

SQLServer提供了Root选项来完成根节点的添加工作:

select FName  as 姓名,  
 FDistrict as '销售情况.区域',  
 FAmount as '销售情况.金额'  
from @sale   
for json path, root('业务信息'); 

查询的结果仍然是Json文本:

数据库大师成长日记:将数据库SQL查询结果直接转为JSON

查询结果自动转成Json

把Json抓取出来,效果如下:

数据库大师成长日记:将数据库SQL查询结果直接转为JSON

自动导出的Json文本

可以看到Json添加了根节点“业务信息”。

希望对您有所帮助!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Domain-Driven Design

Domain-Driven Design

Eric Evans / Addison-Wesley Professional / 2003-8-30 / USD 74.99

"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is n......一起来看看 《Domain-Driven Design》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试