用于SQL Server 2016中的JSON
在SQL Server 2016中,我是否可以使用FOR JSON以下面给定的格式返回JSON数据用于SQL Server 2016中的JSON,sql,json,sql-server,tsql,sql-server-2016,Sql,Json,Sql Server,Tsql,Sql Server 2016,在SQL Server 2016中,我是否可以使用FOR JSON以下面给定的格式返回JSON数据 { "draw": 1, "recordsTotal": 57, "recordsFiltered": 57, "data": [ { "first_name": "Airi", "last_name": "Satou", "position": "Accou
{
"draw": 1,
"recordsTotal": 57,
"recordsFiltered": 57,
"data":
[
{
"first_name": "Airi",
"last_name": "Satou",
"position": "Accountant",
"office": "Tokyo",
"start_date": "28th Nov 08",
"salary": "$162,700"
}
]
}
尝试了以下查询。但是没有得到期望的输出-
SELECT
1 AS draw
,100 AS recordsTotal
,10 AS recordsFiltered
,(SELECT
first_name
,last_name
,position
,office
,start_date
,salary
FROM Employees
FOR JSON PATH,ROOT('Employees'),INCLUDE_NULL_VALUES)
下面给出的查询正确地给出了输出,但无法将draw、recordsFiltered和totalRows列追加到JSON中-
SELECT
first_name
,last_name
,position
,office
,start_date
,salary
FROM Employees
FOR JSON PATH,ROOT('Employees'),INCLUDE_NULL_VALUES
这应该与sys.objects作为虚拟表源的情况完全相同,顺便说一句:始终尝试创建一个独立的工作示例,或者提供一个包含一些数据的表,或者使用每个人都可以使用的通用系统表
SELECT
1 AS draw
,100 AS recordsTotal
,10 AS recordsFiltered
,(
SELECT TOP 3
o.object_id
,o.name
FROM sys.objects o
FOR JSON PATH,INCLUDE_NULL_VALUES
) AS [data]
FOR JSON PATH;
内部选择将创建一个对象数组并将其称为数据。外部选择将把所有这些放在一起
结果
[
{
"draw":1,
"recordsTotal":100,
"recordsFiltered":10,
"data":[
{
"object_id":3,
"name":"sysrscols"
},
{
"object_id":5,
"name":"sysrowsets"
},
{
"object_id":6,
"name":"sysclones"
}
]
}
]
暗示
您可能想了解,为了控制数组括号…示例数据在这里很有用。查询和预期输出都很好,但我们不知道您的数据是什么样子的,所以当我们不知道A是什么时,从A->B中获取数据是很困难的。最好将示例数据作为+。请把你的问题包括在内。有关更多详细信息,您所需的输出与您的数据根本不匹配-产品字段与看起来像个人记录的字段不匹配。指定精确的输入和输出。不过,对于初学者来说,外部查询似乎缺少For JSON子句,该子句将draw、recordsTotal和recordsFiltered放在最终结果中。