[Oracle] 오라클 JSON_ARRAY 함수 사용법
- 데이터베이스/오라클
- 2024. 12. 28.
오라클 SQL에서 JSON 데이터를 배열로 반환하기 위해서는 JSON_ARRAY 함수를 사용하면 된다. JSON_ARRAY 함수는 오라클 12c R2 이상에서 사용할 수 있다. JSON_ARRAY 함수는 입력된 데이터를 단순 배열로 반환하는 함수라고 생각하면 되며, 각 데이터별로 옵션을 사용하여 NULL 또는 JSON 형식을 체크할 수 있다.
JSON_ARRAY( expr [FORMAT JSON], -- JSON 배열에 포함할 값 (JSON 형식인지 지정 가능) expr [FORMAT JSON], -- 추가 값 (콤마로 구분) ... [JSON_on_null_clause] -- NULL 처리 옵션 (NULL ON NULL | ABSENT ON NULL) [JSON_returning_clause] -- 반환 데이터 유형 (RETURNING CLOB | VARCHAR2(size) | BLOB) [STRICT] -- JSON 유효성 검사 (엄격 모드) ) |
목차 |
JSON_ARRAY 기본 사용법
SELECT JSON_ARRAY(7566, 'JONES', 'MANAGER', 2975) AS json_data
FROM dual
JSON_ARRAY 함수에 입력된 데이터를 JSON 배열로 반환한다.
WITH emp_json AS (
SELECT '{"ENAME":"BLAKE"}' json_data FROM dual UNION ALL
SELECT '{"ENAME":"CLARK"}' json_data FROM dual UNION ALL
SELECT '{"ENAME":"JONES"}' json_data FROM dual
)
SELECT JSON_ARRAY(json_data FORMAT JSON)
FROM emp_json
테이블 칼럼의 값을 JSON 배열로 반환할 수 있다.
칼럼의 값이 일반적인 값이거나, JSON 문자열이거나 상관없이 입력된 값을 배열로 반환한다.
WITH emp_json AS (
SELECT '{"ENAME":"BLAKE"}' json_data FROM dual UNION ALL
SELECT '{"ENAME":"CLARK"}' json_data FROM dual UNION ALL
SELECT '{"ENAME":"JONES"}' json_data FROM dual
)
SELECT JSON_ARRAYAGG(json_data FORMAT JSON)
FROM emp_json
테이블의 여러 행의 JSON 문자열 칼럼을 하나의 배열로 반환하기 위해서는,
JSON_ARRAYAGG 함수를 사용하면 된다.
JSON_ARRAY 옵션 사용법
옵션 | 설명 |
FORMAT JSON | 입력값이 JSON 형식임을 지정 |
NULL ON NULL | NULL 값을 JSON 배열에 포함 |
ABSENT ON NULL | NULL 값을 생략 |
RETURNING | 결과 데이터 유형을 VARCHAR2, CLOB, 또는 BLOB로 반환 |
FORMAT JSON
SELECT JSON_ARRAY(7698, '{"ENAME":"BLAKE"}') AS result1
, JSON_ARRAY(7698, '{"ENAME":"BLAKE"}' FORMAT JSON) AS result2
FROM dual
JSON 형식의 값(칼럼)에 FORMAT JSON 옵셥을 부여하면 JSON 데이터로 반환한다.
JSON 형식이 아닌 값에 FORMAT JSON 옵션을 부여하면 오류가 발행하니 주의해야 한다.
SELECT JSON_ARRAY('{"EMPNO":7698}' FORMAT JSON, '{"ENAME":"BLAKE"}' FORMAT JSON)
, JSON_ARRAY('{"EMPNO":7698}', '{"ENAME":"BLAKE"}' FORMAT JSON STRICT)
FROM dual
FORMAT JSON 옵션은 각각 값(칼럼)에 부여할 수 있으며,
STRICT 옵션을 추가로 부여하면 엄격한 JSON 형식을 체크한다.
NULL ON NULL, ABSENT ON NULL
SELECT JSON_ARRAY(7566, 'JONES', NULL, 2850) AS result1
, JSON_ARRAY(7566, 'JONES', NULL, 2450 NULL ON NULL) AS result2
, JSON_ARRAY(7566, 'JONES', NULL, 2975 ABSENT ON NULL) AS result3
FROM dual
NULL OR NULL 옵션을 부여하면 값이 NULL인 경우도 NULL로 반환하며,
옵션을 부여하지 않거나(기본값), ABSENT ON NULL 옵션을 부여하면 NULL인 경우 값을 생략한다.
NULL ON NULL 옵션을 입력값의 맨 끝에만 사용할 수 있다.
RETURNING
SELECT JSON_ARRAY(7566, 'JONES', NULL, 2850) AS result1
, JSON_ARRAY(7566, 'JONES', NULL, 2450 RETURNING VARCHAR2(4000)) AS result2
, JSON_ARRAY(7566, 'JONES', NULL, 2975 RETURNING CLOB) AS result3
, JSON_ARRAY(7566, 'JONES', NULL, 2975 RETURNING BLOB) AS result4
FROM dual
JSON_ARRAY 함수의 기본 반환 데이터 유형은 VARCHAR2(4000)이며,
더 큰 값을 반환하기 위해서는 CLOB, BLOB 데이터 유형을 사용하면 된다.
여러 옵션을 동시에 부여하는 법
여러 옵션을 동시에 부여할 때는 공백으로 구분하여 옵션을 입력하면 된다.