집 >데이터 베이스 >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 중국어 웹사이트의 기타 관련 기사를 참조하세요!