JSON

1. JSON_EXTRACT()의 결과에서 JSON_UNQUOTE()를 호출하는 것과 동일한 ->> 연산자 추가

  • JSON_UNQUOTE(JSON_EXTRACT(col->"$.path")) 와 동일

  • JSON_UNQUOTE(JSON_EXTRACT())를 사용할 수 있는 모든 곳에서 사용 가능

세부 정보
SELECT * FROM t1;

/*
+--------------------------------------+
| jdoc                                 |
+--------------------------------------+
| {"key1": "value1", "key2": "value2"} |
+--------------------------------------+
*/

SELECT JSON_UNQUOTE(JSON_EXTRACT(jdoc, '$.key1')) FROM t1;

/*
+--------------------------------------------+
| JSON_UNQUOTE(JSON_EXTRACT(jdoc, '$.key1')) |
+--------------------------------------------+
| value1                                     |
+--------------------------------------------+
*/

SELECT jdoc -> '$.key1' FROM t1;

/*
+------------------+
| jdoc -> '$.key1' |
+------------------+
| "value1"         |
+------------------+
*/

SELECT jdoc ->> '$.key1' FROM t1;

/*
+-------------------+
| jdoc ->> '$.key1' |
+-------------------+
| value1            |
+-------------------+
*/

2. JSON 집계 함수 JSON_ARRAYAGG(), JSON_OBJECTAGG() 추가

  • JSON_ARRAYAGG() : 컬럼 또는 표현식을 인수로 사용하고 결과를 단일 JSON 배열로 집계

  • JSON_OBJECTAGG() : 키와 값으로 해석되는 두 개의 컬럼 또는 표현식을 사용하여 결과를 단일 JSON 객체로 반환

세부 정보
SELECT * FROM t1;

/*
+------+--------+
| a    | b      |
+------+--------+
| key1 | value1 |
| key2 | value2 |
| key3 | value3 |
+------+--------+
*/

SELECT JSON_ARRAYAGG(a), JSON_OBJECTAGG(a, b) FROM t1;

/*
+--------------------------+--------------------------------------------------------+
| JSON_ARRAYAGG(a)         | JSON_OBJECTAGG(a, b)                                   |
+--------------------------+--------------------------------------------------------+
| ["key1", "key2", "key3"] | {"key1": "value1", "key2": "value2", "key3": "value3"} |
+--------------------------+--------------------------------------------------------+
*/

3. 기존 JSON 값을 읽기 쉬운 형식으로 출력하는 JSON_PRETTY() 함수 추가

4. JSON 컬럼 값의 부분 업데이트에 대한 지원 추가

  • JSON_SET(), JSON_REPLACE(), JSON_REMOVE()

5. JSON_STORAGE_SIZE(), JSON_STORAGE_FREE() 함수 추가

  • JSON_STORAGE_SIZE() : 부분 업데이트 전에 JSON 도큐먼트의 바이너리 표현에 사용되는 저장 공간을 바이트 단위로 반환

  • JSON_STORAGE_FREE() : JSON_SET() 또는 JSON_REPLACE()를 사용하여 부분적으로 업데이트된 후 JSON 유형의 테이블 컬럼에 남아 있는 공간의 크기를 제공

세부 정보

6. XPath 표현식에서 $[1 ~ 5]와 같은 범위에 대한 지원이 DBMS에 추가

  • $[last]가 항상 배열의 마지막(가장 높은 번호) 요소를 선택하고 $[last-1]이 마지막 요소 이전을 선택하도록 last 키워드 및 상대 주소 지정에 대한 지원 추가

세부 정보

7. RFC 7396을 준수하도록 JSON 병합 함수 JSON_MERGE_PATCH() 추가

  • 2개의 JSON 객체를 아래 조건으로 단일 JSON 객체로 병합

    • 두 번째 객체에 동일한 키를 가진 멤버가 없는 첫 번째 객체의 각 멤버

    • 첫 번째 객체에 동일한 키를 가진 멤버가 없고 값이 JSON null 리터럴이 아닌 두 번째 객체의 각 멤버

    • 두 객체에 모두 존재하는 키가 있고 두 번째 객체의 값이 JSON null 리터럴이 아닌 각 멤버

    • JSON_MERGE() => JSON_MERGE_PRESERVE() 함수명 변경

세부 정보

8. 중복 키의 "last duplicate key wins" 정규화를 구현

  • 키의 가장 오른쪽 멤버만 보존

세부 정보

9. JSON_TABLE() 함수 추가

  • JSON 데이터를 받아 지정된 컬럼이 있는 관계형 테이블로 반환

  • JSON_TABLE(expr, path COLUMNS column_list) [AS] alias)

세부 정보

Last updated

Was this helpful?