2017-04-24 33 views
3

使用PostgreSQL我可以有多行json對象。使用FOR JSON子句獲取多行

select (select ROW_TO_JSON(_) from (select c.name, c.age) as _) as jsonresult from employee as c 

這給了我這樣的結果:

{"age":65,"name":"NAME"} 
{"age":21,"name":"SURNAME"} 

但是在SqlServer時,我用它給我的JSON對象,而不是多行的數組FOR JSON AUTO子句。

select c.name, c.age from customer c FOR JSON AUTO 

[{"age":65,"name":"NAME"},{"age":21,"name":"SURNAME"}] 

如何在SqlServer中獲得相同的結果格式?

回答

6

通過每個單排構建單獨的JSON:

SELECT (SELECT [age], [name] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER) 
FROM customer 

有不需要你知道的表結構(但可能有更糟糕的表現,因爲它可以產生大量中間JSON的替代形式):

SELECT [value] FROM OPENJSON(
    (SELECT * FROM customer FOR JSON PATH) 
) 
+0

Fantastico !!像魅力工作..謝謝一噸! :) – izengod

+0

@Mathew:是的,看到更新的問題。我不知道有什麼辦法可以做到這一點,並且會有很好的表現;請問另一個問題,如果這是一個問題。 (或者,您知道,只需寫出列,出於某種原因,建議不要使用SELECT *。) –