2017-04-24 1 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で同じ結果形式を取得するにはどうすればよいですか?個々の行に別のJSONを構築することにより

答えて

6

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

テーブル構造を知っているあなたを必要とする(しかし、おそらくそれは大きな中間JSONを生成する可能性があるため、より悪いパフォーマンスを持っていない別の形があります):

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

ファンタスティック!チャームのように働いた。ありがとうトン! :) – izengod

+0

@Mathew:はい、更新された質問を参照してください。私はこれを行う方法が良いパフォーマンスを持つことは知らない。それが懸念される場合は、別の質問をしてください。 (あるいは、あなたが知っているように、列を書き出すだけで、理由のために 'SELECT *'が推奨されます)。 –

関連する問題