首页 新闻 会员 周边 捐助

tsql 如何输出 int array

0
[待解决问题]

我有一个子表,比如:
select id from (values(1),(3)) as x(id)

我现在希望输出json:
{
"n":"N",
"ids":[1,3]
}

sql 该怎么写呢?

select
'N' as n,
json_query((select id from
(values(1),(3)) as x(id)
for json auto) ) as x
for json path

得到的输出是:
[
{
"n": "N",
"x": [
{
"id": 1
},
{
"id": 3
}
]
}]

非我所愿,就是写不来直接出int数组。
请大神帮忙。

Gun的主页 Gun | 菜鸟二级 | 园豆:204
提问于:2018-10-10 22:10
< >
分享
所有回答(1)
0

CREATE FUNCTION
[dbo].ufn_RawJsonArray returns nvarchar(max)
AS BEGIN
declare @new nvarchar(max) = replace(@json, CONCAT('},{"', @key,'":'),',')
return '[' + substring(@new, 1 + (LEN(@key)+5), LEN(@new) -2 - (LEN(@key)+5)) + ']'
END

执行
select
'N' as n,
json_query(dbo.ufn_RawJsonArray ) as x
for json path

输出 [{"n":"N","x":[1,3]}]

Gun | 园豆:204 (菜鸟二级) | 2018-10-10 22:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册