DB

[MySQL] JSON_CONTAINS

오선지♬ 2025. 2. 25. 19:26
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