JSON是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 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);

演示数据

神奇的for json auto子句

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

select *from @sale for json auto

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

查询结果自动转成Json

把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文本:

查询结果自动转成Json

把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文本:

查询结果自动转成Json

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

自动导出的Json文本

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

希望对您有所帮助!

【编辑推荐】

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

查询mysql并转成json_将数据库SQL查询结果直接转为JSON相关推荐

  1. Python学习日志16 - 数据库SQL查询

    Python学习日志 RBHGO的主页欢迎关注 温馨提示:创作不易,如有转载,注明出处,感谢配合~ 目录 文章目录 Python学习日志 目录 Python学习日志16课 - 数据库SQL查询 DQL ...

  2. WordPress 常用数据库SQL查询语句大全

    https://www.wpdaxue.com/wordpress-sql.html 在使用WordPress的过程中,我们少不了要对数据库进行修改操作,比如,更换域名.修改附件目录.批量修改文章内容 ...

  3. 视频教程-数据库SQL查询,最佳案例讲解-SQL Server

    数据库SQL查询,最佳案例讲解 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ¥19.00 立即订阅 ...

  4. 如何获取查询生成器以字符串形式输出其原始SQL查询?

    本文翻译自:How Do I Get the Query Builder to Output Its Raw SQL Query as a String? Given the following co ...

  5. mysql查询工资最高三人6_MySQL T6 数据库操作——查询(三)高级查询

    复习 算术运算符:+ - * / % [针对数值型,select子句,where子句] 查询大于18岁的学生,学生表内存的是生日 birthday where year(sysdate()) - ye ...

  6. [数据库] SQL查询语句表行列转换及一行数据转换成两列

    本文主要讲述了SQL查询语句表之间的行列转换,同时也包括如何将一行数据转换成两列数据的方法.子查询的应用.decode函数的用法.希望文章对你有所帮助~ 1.创建数据库表及插入数据 2.子查询统计不同 ...

  7. 各数据库SQL查询结果多行数据合并成一行

    SQL查询结果多行数据合并成一行 一.Oracle函数多行数据合并成一行 二.Mysql函数多行数据合并成一行 三.sqlserver函数多行数据合并成一行 四.postgresql函数多行数据合并成 ...

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

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

  9. mysql查询计算机系信息_在学生管理数据库中查询通信系和计算机系的所有教师信息...

    在学生管理数据库中查询通信系和计算机系的所有教师信息 答:select * from 教师 where 系部代码 in(select 系部代码 from 系部 where 系部名称 in('通信系', ...

最新文章

  1. 早在公元前五百年,孙子就参透了数据库分区的真谛
  2. JS正则表达式元字符
  3. 筛数方法相关系数_相关系数怎么计算
  4. Oracle中的NULL(一、问题引入)
  5. shell脚本之for循环
  6. AI基础:特征工程-类别特征
  7. Spring IoC容器:BeanFactory和ApplicationContext谁才是Spring IoC容器
  8. 高级php面试题及部分答案
  9. 金融信息交换协议(FIX)v5.0
  10. 连续反应matlab,MATLAB和Monte Carlo法在连续反应动力学中的应用.pdf
  11. 选出你最喜欢的Linux操作系统吧
  12. RPC——一切架构的基础
  13. 关于科来网络分析系统的激活
  14. telnet和ping区别
  15. 装配图中齿轮的画法_机械制图如何从入门到精通,金属结构件的表达画法,你会吗?...
  16. mysql 合服_风云私服合区的方法详解(mysql数据库合并)
  17. 轩辕实验室 |自动驾驶系统安全隐患分析
  18. secondary namenode 检查点
  19. php常用单词上传知米背单词,知米背单词APP导入单词列表的操作步骤
  20. CSS画心形的三种方法,超级简单

热门文章

  1. 主动防病毒产品及实测篇
  2. 教程-ftp21端口,OpenSSH,22,内部敏感服务对外开放存在风险
  3. R语言使用cor函数计算dataframe中多个数值数据列之间的相关性系数、计算spearman非参数的等级相关性系数
  4. 第 46 届 ICPC 国际大学生程序设计竞赛亚洲区域赛(沈阳)
  5. Dynamic CRM 2016 IFD配置(1)证书颁发机构配置
  6. c语言 r语言 java,R语言rJava包安装载入及JAVA环境配置
  7. scp 传输文件到另一台服务器
  8. 大淘客cms php版本,大淘客cms频繁出现 500错误页面临时解决方法
  9. 华美天气(数据来源:和风天气 API)
  10. YOLOv3学习——锚框和候选区域