ize*_*god 7 sql-server sql-server-2016
使用PostgreSQL我可以拥有多行json对象.
select (select ROW_TO_JSON(_) from (select c.name, c.age) as _) as jsonresult from employee as c
Run Code Online (Sandbox Code Playgroud)
这给了我这个结果:
{"age":65,"name":"NAME"}
{"age":21,"name":"SURNAME"}
Run Code Online (Sandbox Code Playgroud)
但是在SqlServer中,当我使用FOR JSON AUTO子句时,它为我提供了一个json对象数组,而不是多行.
select c.name, c.age from customer c FOR JSON AUTO
[{"age":65,"name":"NAME"},{"age":21,"name":"SURNAME"}]
Run Code Online (Sandbox Code Playgroud)
如何在SqlServer中获得相同的结果格式?
Jer*_*ert 19
通过在每个单独的行中构建单独的JSON:
SELECT (SELECT [age], [name] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)
FROM customer
Run Code Online (Sandbox Code Playgroud)
有一种替代形式,不需要您知道表结构(但可能性能较差,因为它可能会生成一个大的中间JSON):
SELECT [value] FROM OPENJSON(
(SELECT * FROM customer FOR JSON PATH)
)
Run Code Online (Sandbox Code Playgroud)
小智 8
无结构更好的性能
SELECT c.id, jdata.*
FROM customer c
cross apply
(SELECT * FROM customer jc where jc.id = c.id FOR JSON PATH , WITHOUT_ARRAY_WRAPPER) jdata (jdata)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8045 次 |
| 最近记录: |