在SQL Server中从JSON删除空元素

时间:2018-10-04 09:43:00

标签: sql json

想准备不带空列的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中删除,但是由于大量记录,它会降低整体性能,因此是明智的解决方案。

1 个答案:

答案 0 :(得分:2)

如果未明确指定JSON Auto,默认情况下

INCLUDE_NULL_VALUES会忽略空字段。检查更多info.

  

要在FOR JSON子句的JSON输出中包括空值,   指定INCLUDE_NULL_VALUES选项。

     

如果不指定INCLUDE_NULL_VALUES选项,则JSON输出   不包含查询中为空值的属性   结果。

还有Sql Fiddle

忽略空值

(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