728x90
반응형
JSON_CONTAINS()는JSON 배열은 거기에 특정 값이 존재하는지 확인하는 함수 입니다.
쉼표FIND_IN_SET()다르게, 정규화된 JSON 데이터를 사용할 때 유용 합니다.
📌 사용법
JSON_CONTAINS(target, candidate[, path])
- target:동작
- candidate:찾다
- path($.key_name형태)
✅ JSON 배열 찾기
SELECT JSON_CONTAINS('[1, 2, 3, 4]', '3');
결과: 1 ( 3이 배열에 존재)
SELECT JSON_CONTAINS('[1, 2, 3, 4]', '5');
결과: 0 ( 5가 배열에 없음)
✅ WHERE 에서 활용
예: 특정 사용자의 역할(role)이 포함된 데이터 찾기
SELECT * FROM users WHERE JSON_CONTAINS(user_roles, '3');
- user_roles'[1,2,3,4]'JSON 배열의 경우, 이
'3'포함된 기록을 검색합니다.
✅ JSON 찾기에서 특별한 찾기
SELECT JSON_CONTAINS('{"name": "John", "role": ["admin", "editor"]}', '"admin"', '$.role');
- $.role: role키의 값 ( ["admin", "editor"])에서 "admin"을 검색음.
- 결과: 1 ( "admin"이 존재)
✅ JSON 배열에서 찾기
SELECT JSON_CONTAINS(
'[{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]',
'{"id": 2, "name": "Bob"}'
);
결과: 1 (해당하는 것이 배열에 존재함)
SELECT JSON_CONTAINS(
'[{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]',
'{"id": 3, "name": "Charlie"}'
);
결과: 0 (해당되지 않았습니다)
728x90
반응형
'DB' 카테고리의 다른 글
[MySQL][SQL] FIND_IN_SET (0) | 2025.02.24 |
---|---|
[DB][Oracle] SUBSTR / SUBSTRING (0) | 2025.01.26 |
[DB][Oracle] FLOOR / TRUNC (0) | 2025.01.04 |
[DB][Oracle] ROW_NUMBER() (0) | 2025.01.03 |
[DB] GROUP_CONCAT (0) | 2024.12.14 |