서론
안녕하세요,
오늘은 MySQL에서 지원하는 JSON 관련 함수들 중 JSON_TABLE, JSON_OBJECT, JSON_ARRAY에 대해 알아보도록하겠습니다.
이들 중에서 JSON_TABLE은 MySQL 8.0 버전 이상에서만 지원합니다.
반응형
JSON_TABLE
JSON_TABLE함수는 json 형식의 데이터를 다른 테이블과 join이 가능하도록 테이블화를 시켜줍니다.
어떻게 사용하는지는 아래 예제를 한번 봐주세요.
SET @json := '[1, 2, 3]';
SELECT idx, `name`
FROM User U
INNER JOIN JSON_TABLE(@json, '$[*]' COLUMNS (idx BIGINT PATH '$')) J
ON U.idx = J.idx;
json데이터가 단순히 Array일 경우 입니다.
이번에는 Array 안에 Object가 있는 경우를 한번 봐볼까요?
SET @json := '[{"idx": 1}, {"idx": 2}, {"idx": 3}]';
SELECT idx, `name`
FROM User U
INNER JOIN JSON_TABLE(@json, '$[*]' COLUMNS (idx BIGINT PATH '$.idx')) J
ON U.idx = J.idx;
SET @json := '[{"idx": 1, "test": 50}, {"idx": 2, "test": 50}, {"idx": 3, "test": 50}]';
SELECT idx, test
FROM JSON_TABLE(@json, '$[*]' COLUMNS (idx BIGINT PATH '$.idx', test INT PATH '$.test'))
JsonObject가 있는 경우에는 PATH 뒤에 키값을 함께 적어주면 됩니다.
키가 여러 개면 columns에 적어주면 됩니다.
JSON_OBJECT
JSON_OBJECT 함수는 JsonObject 형식으로 만드는 것 입니다.
따라서 키와 값을 적어주어야 합니다.
SELECT JSON_OBJECT(
'user_idx', idx,
'user_name' `name`
) FROM User WHERE idx = 1;
// 결과
{"user_idx": 1, "user_name": "test"}
아주 간단하게 Json 형식으로 결과가 출력되는 것을 보실 수 있을 겁니다.
JSON_ARRAY
JSON_ARRAY함수는 JsonArray형식으로 만드는 것입니다.
이번에는 키가 필요없고 값만 나열해 주시면 됩니다.
SELECT JSON_ARRAY(idx,`name`) FROM User WHERE idx = 1;
// 결과
[1, "test"]
마무리
여기까지 간단하게 Json 관련 함수 중 3가지를 알아보았습니다.
MySQL 8.0에서 JSON 함수 관련 자료는 아래 공식 레퍼런스 홈페이지에서 찾아보실 수 있습니다.
https://dev.mysql.com/doc/refman/8.0/en/json-function-reference.html
반응형
'MySQL' 카테고리의 다른 글
데이터베이스 인덱스란? 클러스터 인덱스와 넌클러스터 인덱스 개념 차이점 (1) | 2023.11.03 |
---|---|
MySQL 타입 변환 Cast / Convert (0) | 2023.10.16 |
MySQL Json 사용법 Json table SELECT, INSERT, UPDATE 방법 (0) | 2023.10.06 |
MySQL date add, diff, 시간 계산 (더하기, 빼기) 정리 (0) | 2023.08.18 |