gpt4 book ai didi

sql-server - 使用 FOR JSON AUTO 语法时删除空的 json 对象

转载 作者:行者123 更新时间:2023-12-05 03:56:20 24 4
gpt4 key购买 nike

抱歉,如果标题有点令人困惑,但我会尝试举一个真实的例子来解决我的问题。

所以我正在尝试使用支持查询语法的新 Sql Server JSON。

我在两个表之间进行左连接,当然,如果第二个表不包含任何元素,我会为第二个表获取空值。

select a.Id, b.RefId, b.Name
from table1 a
left join table2 b
on a.Id = b.RefId

查询很简单,只是为了说明我在做什么。如果我在查询末尾添加 FOR JSON AUTO, WITHOUT_ARRAY_WRAPPER 部分,我会得到一个很好的 json 字符串,但是,如果 table2 中没有元素与 table1 然后我得到一个空对象并排列。如下所示:

{
"Id": 1,
"b":[{}]
}

这很好,但我想从 b 元素中完全删除空对象,所以,我可以有这样的东西:

{
"Id": 1,
"b":[]
}

这是否可以在 Sql Server 中完成,而不是在 c# 中编写自定义转换器来删除那些假元素?

最佳答案

尝试以下操作:

select replace((select a.Id, b.RefId, b.Name
from table1 a
left join table2 b
on a.Id = b.RefId
for json auto, without_array_wrapper), '{}', '')

关于sql-server - 使用 FOR JSON AUTO 语法时删除空的 json 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59439605/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com