私はjson_agg
機能を持つPostgreSQLリクエストからJSON配列を返しています。しかし、行が見つからない場合、json_agg
は、空のJSON配列[]
の代わりに空の文字列を返します(json.orgを理解している場合は角括弧が必須です)。例えばなぜPostgreSQLのjson_agg()関数が空の配列を返さないのですか?
:と同じコマンドが '1 = 1'(PostgreSQLの9.5でテスト)有効なJSON配列を返し、一方
SELECT json_agg(t.*) FROM (SELECT 'test' AS mycol WHERE 1 = 2) AS t ;
は、空の文字列を返します。
空のセットからヌル
'1 = 2 'の任意の行を返すことはありませんし、' 1 = 1'はすべての行を返します。もちろん結果は異なります。なぜあなたはそれが驚くべきものだと正確に分かりますか? –
質問で説明したように、IMHOの 'json_agg'は、行が選択されていないときに有効なJSON配列(つまり' [] ')を返さなければなりません。代わりに、 'json_agg'は空文字列を返します。 – pdagog
空文字列ではなくNULLを返します。そして、この動作は[https://www.postgresql.org/docs/current/static/functions-aggregate.html]で文書化されています: "*カウントを除いて、これらの関数は、行が選択されます* "。あなたが望んでいなければ、 'coalesce()'を使います。 –