>데이터 베이스 >MySQL 튜토리얼 >MySQL의 JSON 배열에서 특정 키 값을 효율적으로 추출하는 방법은 무엇입니까?

MySQL의 JSON 배열에서 특정 키 값을 효율적으로 추출하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-29 13:43:02544검색

How to Efficiently Extract Specific Key Values from JSON Arrays in MySQL?

MySQL JSON 배열에서 특정 키 값 찾기

MySQL에서는 JSON 개체 배열 내에서 특정 노드를 찾는 것이 어려울 수 있습니다. 이 문제를 해결하려면 JSON_SEARCH 및 JSON_CONTAINS 함수를 활용하는 것이 좋습니다. 그러나 쿼리를 단순화하기 위해 이러한 기능을 결합하는 것이 항상 가능한 것은 아닙니다.

MySQL 8.0은 JSON 문서에서 가상 파생 테이블을 생성하여 효과적으로 행과 열로 처리하는 JSON_TABLE() 함수를 사용하는 솔루션을 제공합니다. . 이를 통해 JSON 데이터에 대한 선택 및 투영과 같은 작업을 수행할 수 있습니다.

시연하기 위해 예제 데이터를 테이블에 삽입해 보겠습니다.

<code class="sql">create table mytable ( mycol json );

insert into mytable set mycol = '[{"Race": "Orc", "strength": 14}, {"Race": "Knight", "strength": 7}]';</code>

이제 JSON_TABLE()을 사용하여 다음을 수행할 수 있습니다. 가상 테이블 생성:

<code class="sql">SELECT j.*
FROM mytable,
JSON_TABLE(mycol, '$[*]' COLUMNS (
    race VARCHAR(10) PATH '$.Race',
    strength INT PATH '$.strength'
)) AS j;</code>

다음 결과가 생성됩니다.

race strength
Orc 14
Knight 7

특정 종족의 힘을 검색하려면 WHERE 절을 사용할 수 있습니다.

<code class="sql">SELECT j.strength
FROM mytable,
JSON_TABLE(mycol, '$[*]' COLUMNS (
    race VARCHAR(10) PATH '$.Race',
    strength INT PATH '$.strength'
)) AS j
WHERE j.race = 'Orc';</code>

다음 결과가 반환됩니다.

strength
14

그러나 이 접근 방식을 사용하려면 쿼리에 속성 필드를 지정해야 하며, 이는 알 수 없는 속성 정의가 있는 데이터 세트에는 적합하지 않을 수 있습니다.

위 내용은 MySQL의 JSON 배열에서 특정 키 값을 효율적으로 추출하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.