json_agg
함수가있는 PostgreSQL 요청에서 JSON 배열을 반환합니다. 그러나 행이 없으면 json_agg
은 빈 JSON 배열 []
대신 빈 문자열을 반환합니다 (json.org을 이해하면 대괄호는 필수 항목입니다). 예를 들어PostgreSQL json_agg() 함수가 빈 배열을 반환하지 않는 이유는 무엇입니까?
:과 같은 명령이 '1 = 1'(9.5 PostgreSQL의 테스트) 유효한 JSON 배열을 리턴 반면
SELECT json_agg(t.*) FROM (SELECT 'test' AS mycol WHERE 1 = 2) AS t ;
는 빈 문자열을 반환한다.
아이디어가 있으십니까? 빈 세트에서 널 (null)
'1 = 2' 모든 행과'1을 반환하지 않습니다 경우 = 1'은 모든 행을 반환합니다. 물론 결과는 다릅니다. 왜 당신은 그 놀라운 것을 정확히 발견합니까? –
질문에서 설명했듯이, IMHO'json_agg'는 행을 선택하지 않으면 올바른 JSON 배열 (즉,'[] ')을 반환해야합니다. 대신에,'json_agg'는 빈 문자열을 반환합니다. – pdagog
빈 문자열이 아닌'NULL'을 반환합니다. 그리고이 동작은 [문서화되어 있습니다] (https://www.postgresql.org/docs/current/static/functions-aggregate.html) : "* 카운트를 제외하고는이 함수는 행이 선택됩니다 * ". 원하지 않는다면,'coalesce()'를 사용하십시오. –