gpt4 book ai didi

sql - 如何从 JSON_QUERY 有条件地返回 NULL

转载 作者:行者123 更新时间:2023-12-04 02:31:49 25 4
gpt4 key购买 nike

如果从子查询(或左连接)中选择的值为空,我如何返回一个返回 NULL(或根本没有属性)的 JSON_QUERY?

这是一个简单的例子(假设下面的 NULL 是一个子查询):

SELECT 
JSON_QUERY((SELECT NULL as SomeColumn
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)) AS Test

这将返回一个空的 JSON 对象——这不是我想要的:

Test
----------------
{}

因为 NULL 是从子查询返回的,所以如果子查询返回 NULL,我希望它返回 NULL,否则它应该返回 JSON。

当子查询返回NULL时,JSON结果应该是:

Test
----------------
NULL

当子查询返回JSON时,JSON结果应该是:

Test
----------------
{ someColumn: 'some json' ... }

如何使用 JSON 查询执行此操作?

[编辑]

我试过这个,认为我可以做一个 CASE 语句:

SELECT 
JSON_QUERY((SELECT JSON_VALUE('{"SomeColumn":"Test"}', '$') AS SomeColumn
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)) AS Test

但这不会选择根。以上返回:

Test
------
{}

用例

我所追求的用例是这样的。

当我返回 JSON 查询时,我希望能够在地址存在时返回类似这样的内容:

   { 
name: 'John',
address: {
line1: '123 elm st'
}
}

或者如果没有地址记录,我希望它返回:

   { 
name: 'John',
address: NULL
}

   { 
name: 'John'
}

我不想让它回来

   { 
name: 'John',
address: {}
}

最佳答案

像这样?

SELECT NULLIF(JSON_QUERY((SELECT NULL as SomeColumn FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)), '{}') as Test

关于sql - 如何从 JSON_QUERY 有条件地返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63834276/

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