想要准备没有空列的 json。
这是详细示例
我的表
=================
id , Name
=================
1 , Ali
2 ,
3 , jhon
=================
Run Code Online (Sandbox Code Playgroud)
JSON 的 SQL 语句
(SELECT [Id],[Name] FROM My_Table)
FOR JSON PATH
Run Code Online (Sandbox Code Playgroud)
SQL 结果:
[{
"Id": 1,
"Name": "Ali"
}, {
"Id": 2,
"Name": ""
}, {
"Id": 3,
"Name": "Jhon"
}]
Run Code Online (Sandbox Code Playgroud)
但我想排除没有值的元素,例如以下结果中的 No "Name":"" Element:
[{
"Id": 1,
"Name": "Ali"
}, {
"Id": 2,
}, {
"Id": 3,
"Name": "Jhon"
}]
Run Code Online (Sandbox Code Playgroud)
编辑: 请注意,我可以应用 CASE 或 UDF 将空值转换为 null,并且 null 值可能会从 json 中删除,但它会降低大量记录的整体性能,因此寻找明智的解决方案。
JSON Auto
如果未明确指定,则默认忽略空字段INCLUDE_NULL_VALUES
。检查更多信息。
要在 FOR JSON 子句的 JSON 输出中包含空值,请指定 INCLUDE_NULL_VALUES 选项。
如果不指定 INCLUDE_NULL_VALUES 选项,则 JSON 输出不包含查询结果中为 null 的值的属性。
另外,Sql Fiddle
忽略空值
(SELECT [Id], (CASE WHEN Name = '' THEN NULL ELSE Name END) as Name FROM test)
FOR JSON Auto
Run Code Online (Sandbox Code Playgroud)
包括空值
(SELECT [Id],(CASE WHEN Name = '' THEN NULL ELSE Name END) as Name FROM test)
FOR JSON Auto, INCLUDE_NULL_VALUES
Run Code Online (Sandbox Code Playgroud)