반응형
MySQL은 JSON 데이터를 다루기 위한 검사/문자열/보조 기능을 제공하는 유틸리티 함수들을 갖추고 있다. 이 함수들은 복잡한 JSON 연산보다는 가볍게 확인하거나 보정할 때 매우 유용하다.

1. JSON_VALID: JSON 유효성 확인
JSON_VALID(json_val)
- JSON 문자열이 정상적인 형식인지 검사
- 1이면 유효, 0이면 무효
예제
SELECT JSON_VALID('{"name": "철수"}');
-- 결과: 1
SELECT JSON_VALID('"name": "철수"');
-- 결과: 0 (잘못된 형식)
- INSERT 전에 JSON 형식이 맞는지 체크할 때 자주 사용됨
반응형
2. JSON_UNQUOTE: JSON 문자열 따옴표 제거
JSON_UNQUOTE(json_val)
- JSON 문자열의 양쪽 따옴표(") 제거
예제
SELECT JSON_UNQUOTE('"철수"');
-- 결과: 철수
SELECT JSON_UNQUOTE('25');
-- 결과: 25 (숫자는 그대로)
- JSON_EXTRACT() 결과값이 "홍길동"처럼 따옴표 포함일 때,
문자열 처리 용도로 사용함
SELECT JSON_UNQUOTE(JSON_EXTRACT('{"name": "홍길동"}', '$.name'));
-- 결과: 홍길동
3. JSON_TYPE: 데이터 타입 확인
JSON_TYPE(json_doc[, path])
- 대상 값의 타입을 반환 (OBJECT, ARRAY, STRING, INTEGER 등)
예제
SELECT JSON_TYPE('{"name": "철수"}', '$.name');
-- 결과: STRING
SELECT JSON_TYPE('["A", "B"]');
-- 결과: ARRAY
- CASE WHEN 조건문에 활용 가능
4. JSON_DEPTH: JSON의 깊이 구하기
JSON_DEPTH(json_doc)
- 중첩된 JSON 구조의 최대 깊이를 계산
예제
SELECT JSON_DEPTH('{"a": 1}');
-- 결과: 1
SELECT JSON_DEPTH('{"a": {"b": {"c": 3}}}');
-- 결과: 3
- 구조 분석 시 유용
반응형
5. JSON_QUOTE: 문자열을 JSON 문자열로 감싸기
JSON_QUOTE(string_val)
- 문자열을 JSON 문자열로 변환 (따옴표 추가 + 이스케이프 처리)
예제
SELECT JSON_QUOTE('철수');
-- 결과: "철수"
- 반대 함수가 JSON_UNQUOTE
6. JSON_STORAGE_SIZE: 저장 공간 크기 확인
JSON_STORAGE_SIZE(json_doc)
- 내부적으로 JSON이 차지하는 바이트 수 반환
예제
SELECT JSON_STORAGE_SIZE('{"name": "홍길동"}');
-- 결과: 20 (예시값)
- 용량 제한 관리나 DB 튜닝 시 사용
7. 실무 팁: 조합 활용
SELECT
JSON_UNQUOTE(profile -> '$.name') AS 이름,
JSON_TYPE(profile, '$.age') AS 나이타입,
JSON_VALID(profile) AS 유효여부
FROM users;
- JSON 데이터를 문자열처럼 출력하고, 타입 확인하고, 정상 여부 검사까지 한 번에 가능
참고 문서
https://dev.mysql.com/doc/refman/8.0/en/json-utility-functions.html
반응형
'DB' 카테고리의 다른 글
| [MySQL] JSON_MERGE, JSON_ARRAY_APPEND 활용법 (2) | 2025.07.28 |
|---|---|
| [MySQL] JSON_CONTAINS, JSON_LENGTH 등 검사 함수 모음 (1) | 2025.07.28 |
| [MySQL] JSON_SET, JSON_REPLACE로 값 수정하기 (1) | 2025.07.28 |
| [MySQL] JSON_EXTRACT와 -> 연산자로 값 조회하기 (2) | 2025.07.28 |
| [MySQL] JSON_OBJECT, JSON_ARRAY로 JSON 생성하기 (1) | 2025.07.28 |
| [MySQL] JSON 데이터 타입과 기본 구조 이해하기 (1) | 2025.07.28 |
| [MySQL] 암호화와 해시 함수 선택 가이드 (1) | 2025.07.28 |
| [MySQL] COMPRESS와 UNCOMPRESS로 데이터 압축 처리하기 (1) | 2025.07.28 |