sql - 从 SQL Server 中的 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 将空值转换为空值,空值可能会从 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
包括空值
(SELECT [Id],(CASE WHEN Name = '' THEN NULL ELSE Name END) as Name FROM test)
FOR JSON Auto, INCLUDE_NULL_VALUES
推荐阅读
- android - 在应用打开时收到 Firebase 通知时触发函数
- spring-boot - 我想在 REST api 中动态呈现我选择的数据格式
- javascript - 如何根据值类型javascript更改对象?
- c - 为什么 nm 为 C 编写并嵌入 golang 对象的库中的变量符号报告错误的偏移值太大?
- r - 如何有效地从 R 中的 PDF 中提取表格数据?
- ios - XCode 项目构建失败:x 架构 x86_64 clang 的重复符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- android - 调用 onPause 时,Android 服务会在 1 分钟后停止
- android - Android中两个模块之间的导航
- r - 如何将男性和女性的人口加在一起以删除人口统计表中的性别作为变量。在 R 工作室中
- html - Pwa beforeInstallPrompt 不在移动浏览器中触发,但在普通桌面浏览器中工作