Study/DB

[MySQL] json array 조회 및 json_extract 함수 사용 방법

 

MySQL에서 json 배열이나 리스트를 조회하는 json_arrayagg 함수와 json 객체에서 데이터를 추출하는 json_extract 함수 사용법입니다.

 

JSON_ARRAYAGG란?

json_arrayagg 함수는 그룹화된 데이터를 json 배열로 집계하는 함수입니다.

데이터가 없으면 null을 반환합니다.

 

MySQL JSON_ARRAYAGG 공식문서 바로가기

 

MySQL :: MySQL 8.4 Reference Manual :: 14.19.1 Aggregate Function Descriptions

MySQL 8.4 Reference Manual  /  ...  /  Functions and Operators  /  Aggregate Functions  /  Aggregate Function Descriptions 14.19.1 Aggregate Function Descriptions This section describes aggregate functions that operate on sets of values. They are

dev.mysql.com

 

JSON_ARRAYAGG 사용 방법 및 예제

json_arrayagg 함수의 사용 방법은 다음과 같습니다.

json_arrayagg(컬럼이나 표현식)

 

json_array를 사용한 예제 쿼리입니다.

select CountryCode, json_arrayagg(Name) as 'cities'
from world.city
group by CountryCode;

json_array 예제 쿼리 실행 결과
json_array 예제 쿼리 실행 결과

예제 쿼리는 국가 코드를 기준으로 그룹화하고, 도시의 이름을 json 배열로 집계하는 쿼리입니다.

 

 

 

 

 

 

JSON_EXTRACT란?

json_extract 함수는 json 데이터에서 일치하는 데이터를 가져오는 함수입니다.

 

json_arrayagg 함수와의 차이점은 json_arrayagg 함수는 그룹 함수고 json_extract는 일반 함수입니다.

그리고 json_arrayagg는 그룹화된 데이터를 json 배열로 만들어주고, json_extract는 json 데이터에서 특정 데이터를 추출하는 함수입니다. 

 

MySQL JSON_EXTRACT 공식문서 바로가기

 

MySQL :: MySQL 8.4 Reference Manual :: 14.17.3 Functions That Search JSON Values

14.17.3 Functions That Search JSON Values The functions in this section perform search or comparison operations on JSON values to extract data from them, report whether data exists at a location within them, or report the path to data within them. The MEM

dev.mysql.com

 

JSON_EXTRACT 사용 방법 및 예제

json_extract 함수의 사용 방법은 다음과 같습니다.

JSON_EXTRACT(json 데이터, 경로1, 경로2..)

 

json_extract를 사용한 예제 쿼리입니다.

select json_extract('["Kabul", "Qandahar", "Herat", "Mazar-e-Sharif", ["The Valley", "South Hill"]]', '$[1]', '$[4][0]');

json_extract 예제 쿼리 실행 결과
json_extract 예제 쿼리 실행 결과

 

json 배열 데이터의 경우, $[1]처럼 인덱스를 사용해서 데이터를 추출할 수 있습니다.

json 객체 데이터는 다음과 같이 사용하면 됩니다.

select json_extract('{"Herat": 186800, "Kabul": 1780000, "Qandahar": 237500, "Mazar-e-Sharif": 127800}', '$.Herat');

json_extract json 객체 사용 결과
json_extract json 객체 사용 결과

json 객체를 사용하는 경우, $.key 형식으로 사용하면 값을 추출할 수 있습니다.