SQL Server 2005
开始支持XML
数据类型,提供原生的XML
数据类型、XML
索引及各种管理或输出XML
格式的函数。随着JSON
的流行,SQL Server2016
开始支持JSON
数据类型,不仅可以直接输出JSON
格式的结果集,还能读取JSON
格式的数据。对于有用到JSON
格式的应用程式来说,这无疑是一利器,因为不再需要使用JSON.Net
这类工具进行分析和处理JSON
数据,直接利用SQL Server
内置函数就可以处理,轻松将查询结果输出为JSON
格式,或者搜索JSON
文件内容。下面通过实例的方式,展现SQL Server 2016
这一新功能。
下面是我们熟悉的SELECT
及输出格式,后面对JSON
的演示基于此SQL
:
一、将查询结果输出JSON
格式
- 要将
SELECT
语句的结果以JSON
输出,最简单的方法是在后面加上FOR JSON AUTO
:
- 若要为
FOR JSON
加上Root Key
,可以用ROOT
选项来自定义ROOT Key
的名称:
若要自定义输出JSON
格式的结构是,必须使用JSON PATH
。若SELECT
的列中,存在列名名称相同时,必须用别名重命名才能正常查询,否则会报类似下面错误提示:
JSON PATH
输出:
JSON PATH+ROOT
输出:
- 为
NULL
的数据在输出JSON
时,会被忽略,若想要让NULL
的字段也显示出来,可以加上选项INCLUDE_NULL_VALUES
,该选项也适用于AUTO
。
- 带有层级关系的,可以增加节点,比如下面的
SQL
,增加了一个“SN
”节点,把栏位SERNUM
和CLIMAT
放在里面:
二、解析JSON
格式的数据
- 使用
OPENJSON()
函数:
- 通过
WITH
选项,自定义输出列: