下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

SQL与Json的关系:将数据库SQL查询结果直接转为JSON

作者:课课家教育     来源: http://www.kokojia.com点击数:2396发布时间: 2019-04-16 09:36:29

标签: 数据库SQL数据库设计视频数据库系统工程师

  其实呢,在JS语言中,一切都是对象。因此,任何支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型。我们知道JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

  SQL与Json

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

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

  测试数据准备

SQL与Json的关系:将数据库SQL查询结果直接转为JSON_数据库SQL_数据库设计视频_数据库系统工程师_课课家

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

  declare@saletable(

  FNamenvarchar(50),

  FDistrictnvarchar(50),

  FAmountdecimal(28,10)

  );

  insertinto@sale

  values

  ('张三','北京',20000),

  ('张三','上海',50000),

  ('张三','深圳',40000),

  ('张三','广州',30000),

  ('李四','北京',30000),

  ('李四','上海',50000),

  ('李四','深圳',40000),

  ('李四','广州',10000);

  演示数据

  神奇的forjsonauto子句

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

  select*from@saleforjsonauto

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

  查询结果自动转成Json

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

  自动导出的Json文本

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

  神奇的forjsonpath子句

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

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

  selectFNameas姓名,

  FDistrictas'销售情况.区域',

  FAmountas'销售情况.金额'

  from@sale

  forjsonpath

  查询的结果也是Json文本:

  查询结果自动转成Json

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

  自动导出的Json文本

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

  神奇的ROOT选项

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

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

  selectFNameas姓名,

  FDistrictas'销售情况.区域',

  FAmountas'销售情况.金额'

  from@sale

  forjsonpath,root('业务信息');

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

  查询结果自动转成Json

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

  自动导出的Json文本可以看到Json添加了根节点“业务信息”。

  小编结语:其实,对于很多人搞不清楚JSON和Js对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:JSON是JS对象的字符串表示法,它使用文本表示一个JS对象的信息,本质是一个字符串。那么通过这一个教程,希望大家能够对JSON有更深的理解。

赞(10)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程