PostgreSQLを使用すると、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でFOR JSON AUTO句を使用すると、複数の行ではなくjsonオブジェクトの配列が表示されます。
select c.name, c.age from customer c FOR JSON AUTO
[{"age":65,"name":"NAME"},{"age":21,"name":"SURNAME"}]
SqlServerで同じ結果形式を取得するにはどうすればよいですか?
個々の行ごとに個別のJSONを作成するには:
SELECT (SELECT [age], [name] FOR JSON PATH, WITHOUT_ARRAY_WRAPPER)
FROM customer
テーブル構造を知る必要のない別の形式があります(ただし、大きな中間JSONが生成される可能性があるため、パフォーマンスが低下する可能性があります)。
SELECT [value] FROM OPENJSON(
(SELECT * FROM customer FOR JSON PATH)
)
構造がなく、パフォーマンスが向上
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)