본문 바로가기

[오라클 레퍼런스 함수] JSON_OBJECTAGG - 키-값 쌍으로 구성된 JSON 객체 반환

by ㅇㅍㅍ 2023. 8. 7.
[오라클 레퍼런스 함수] JSON_OBJECTAGG - 키-값 쌍으로 구성된 JSON 객체 반환
728x90

 

JSON_OBJECTAGG

 

구문

JSON_OBJECTAGG
  ( [ KEY ] key_expr VALUE val_expr [ FORMAT JSON ]
    [ JSON_on_null_clause ] [ JSON_agg_returning_clause ]
    [ STRICT ] [ WITH UNIQUE KEYS ]  )

 

JSON_on_null_clause::=

{ NULL | ABSENT } ON NULL

 

JSON_agg_returning_clause::=

RETURNING { VARCHAR2 [ ( size [BYTE | CHAR] ) ]
          | CLOB
          | BLOB
          }

 

목적

JSON_OBJECTAGG는 SQL/JSON 함수로서, 입력으로 속성 키-값(key-value pair) 쌍을 받습니다. 일반적으로 속성 키, 속성 값 또는 둘 다가 SQL 식의 열로 사용됩니다. 이 함수는 각 키-값 쌍에 대해 객체 멤버를 구성하고, 이러한 객체 멤버를 포함하는 단일 JSON 객체를 반환합니다.

 

[KEY] string VALUE expr

이 절을 사용하여 속성 키-값 쌍을 지정합니다.

  • KEY는 선택 사항으로 의미적 명확성을 위해 제공됩니다.
  • string을 사용하여 속성 키 이름을 대소문자를 구분하여 지정합니다.
  • 값을 지정하기 위해 expr을 사용합니다. expr에는 SQL 숫자 리터럴, 텍스트 리터럴, 날짜 또는 타임스탬프로 평가되는 표현식을 지정할 수 있습니다. 날짜와 타임스탬프 데이터 유형은 ISO 8601 날짜 형식을 따라 생성된 JSON 객체나 배열에서 JSON 문자열로 출력됩니다. expr이 숫자 리터럴로 평가되면 결과 속성 값은 JSON 숫자 값이 되며, 그렇지 않은 경우 결과 속성 값은 이중 인용 부호로 둘러싸인 대소문자를 구분하는 JSON 문자열 값이 됩니다.

 

FORMAT JSON

이 선택적 절을 사용하여 입력 문자열이 JSON임을 나타내고 따라서 출력에서 따옴표가 붙지 않습니다.

 

JSON_on_null_clause

이 절을 사용하여 expr이 null로 평가될 때 이 함수의 동작을 지정합니다.

  • NULL ON NULL - NULL ON NULL이 지정된 경우 주어진 키의 값으로 JSON NULL 값이 사용됩니다.
  • ABSENT ON NULL - 이 절을 지정하면 함수가 JSON 객체에서 속성 키-값 쌍을 생략합니다.

 

JSON_agg_returning_clause

이 절을 사용하여 이 함수가 반환하는 문자열 데이터의 데이터 유형을 지정합니다. 다음 데이터 유형을 지정할 수 있습니다:

 

  • VARCHAR2[(size [BYTE,CHAR])]
    SQL의 다른 위치에서 VARCHAR2 데이터 유형을 지정할 때는 크기를 지정해야 합니다. 그러나 이 절에서는 크기를 생략할 수 있습니다.
  • CLOB는 단일 바이트 또는 다중 바이트 문자를 포함하는 문자형 대형 객체를 반환합니다.
  • BLOBAL32UTF8 문자 집합의 이진 대형 객체를 반환합니다.

이 절을 생략하거나 VARCHAR2를 지정하지만 size 값을 생략하면 JSON_OBJECTAGGVARCHAR2(4000) 유형의 문자열을 반환합니다.

이전 데이터 유형에 대한 자세한 내용은 "Data Types"을 참조하십시오.

 

STRICT

STRICT 절을 지정하여 JSON 생성 함수의 출력이 올바른 JSON인지 확인합니다. 확인이 실패하면 구문 오류가 발생합니다.

JSON_OBJECT에 대한 예제는 JSON_OBJECT를 참조하십시오.

 

WITH UNIQUE KEYS

WITH UNIQUE KEYS를 지정하여 생성된 JSON 객체가 고유한 키를 가지도록 보장합니다.

 

예시

다음 예제는 부서 이름과 부서 번호가 포함된 멤버를 가진 JSON 객체를 구성합니다:

SELECT JSON_OBJECTAGG(KEY department_name VALUE department_id) "Department Numbers"
  FROM departments
  WHERE department_id <= 30;

Department Numbers
----------------------------------------------------
{"Administration":10,"Marketing":20,"Purchasing":30}

 


출처: 오라클 레퍼런스

원문 링크: Oracle JSON_OBJECTAGG 함수 문서

 

반응형

댓글