DB/Oracle

[Oracle, postGresql] json_arrayagg , json_object, json_agg 사용법

멋진놈 2022. 12. 8. 15:18
728x90

[Oracle]

Json_arrayagg , json_object 

-> oracle query 데이터 값을 json_object 값으로 받을 때 사용

 

# query 

select * from t_board;

# query 

select json_arrayagg(
        json_object(
            key 'board_idx' value b.board_idx,
            key 'title' value b.title,
            key 'contents' value b.hit_cnt,
            key 'creator_id' value b.creator_id,
            key 'updater_id' value b.updater_id,
            key 'delete_yn' value b.delete_yn
            )
        ) as json_data
from t_board b
ORDER BY b.board_idx;

 

[{"board_idx":1020,"title":"test1","contents":0,"creator_id":1,"updater_id":1,"delete_yn":"N"},{"board_idx":1021,"title":"test2","contents":0,"creator_id":2,"updater_id":2,"delete_yn":"N"},{"board_idx":1022,"title":"test3","contents":0,"creator_id":3,"updater_id":3,"delete_yn":"N"}]

 

=> 인터넷에 찾아보면

SELECT JSON_OBJECT(*)  FROM t_board;

-> 참고 자료에 보면 오라클 12.2 이상 버전에서는 가능 하다고 하는데 

버전 확인 해보니

 

흠.

낮은 버전은 아래와 같음.

-> 으로도 위와 같은 결과를 받을 수 있다고 하는데, 누락된 표현식이라는 에러 뜨면서 안됨.

오라클 버전 문제. oracle 19c는 될거같음.

 

 

[postGresql]

json_agg

 

# query 

select json_agg(b) from (select * from t_board ) as b;

 

[{"board_idx":1020,"title":"test1","contents":0,"creator_id":1,"updater_id":1,"delete_yn":"N"},{"board_idx":1021,"title":"test2","contents":0,"creator_id":2,"updater_id":2,"delete_yn":"N"},{"board_idx":1022,"title":"test3","contents":0,"creator_id":3,"updater_id":3,"delete_yn":"N"}]

 

같은 결과로 나옴.