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