Heim >Datenbank >MySQL-Tutorial >Wie kann man in MySQL 8.0.15 effizient nach einem bestimmten Wert in einem JSON-Array suchen?

Wie kann man in MySQL 8.0.15 effizient nach einem bestimmten Wert in einem JSON-Array suchen?

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 00:46:30277Durchsuche

How to Efficiently Search for a Specific Value within a JSON Array in MySQL 8.0.15?

MySQL sucht JSON-Wert nach Schlüssel im Array

In MySQL 8.0.15 kann das Finden eines bestimmten Werts in einem Array von JSON-Objekten erfolgen herausfordernd. Die Funktion JSON_TABLE() bietet jedoch eine Lösung, indem sie das JSON-Dokument in eine virtuelle abgeleitete Tabelle konvertiert.

Betrachten Sie das folgende Array:

<code class="json">[
    {"Race": "Orc", "strength": 14},
    {"Race": "Knight", "strength": 7},
]</code>

Um die Stärke des Ritters abzurufen, haben wir kann Folgendes verwenden:

<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 = 'Knight'</code>

Dadurch wird das JSON-Array in eine Tabelle mit den Spalten „Rasse“ und „Stärke“ konvertiert, sodass wir eine WHERE-Klausel anwenden können, um den gewünschten Wert zu finden.

Allerdings Der Nachteil der Verwendung von JSON_TABLE() besteht darin, dass die gewünschten Attribute in der Abfrage angegeben werden müssen, was möglicherweise nicht möglich ist, wenn die Attribute unbekannt sind. Dies unterstreicht die Bedeutung der Definition von Attributen bei der Arbeit mit JSON-Daten, um Abfragen zu vereinfachen und komplexe Verknüpfungen zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie kann man in MySQL 8.0.15 effizient nach einem bestimmten Wert in einem JSON-Array suchen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn