Heim  >  Artikel  >  Datenbank  >  Wie finde ich einen bestimmten Wert in einem JSON-Array in MySQL?

Wie finde ich einen bestimmten Wert in einem JSON-Array in MySQL?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 08:24:03182Durchsuche

How to Find a Specific Value within a JSON Array in MySQL?

MySQL: Suche nach einem bestimmten Schlüsselwert innerhalb eines Arrays

In MySQL können Sie auf Szenarien stoßen, aus denen Sie einen bestimmten Wert abrufen möchten ein Array von JSON-Objekten. Mit der Funktion JSON_SEARCH können Sie den Pfad zum gewünschten Knoten abrufen. Allerdings kann es eine Herausforderung sein, dies mit der Auswahl eines bestimmten Array-Elements zu kombinieren.

Lösung: JSON_TABLE-Funktion

MySQL 8.0 bietet die JSON_TABLE-Funktion, die ein JSON transformiert Dokument in eine virtuelle abgeleitete Tabelle, ähnlich wie herkömmliche Zeilen und Spalten. Dadurch können Sie Auswahl- und Projektionsvorgänge für die JSON-Daten durchführen.

Betrachten Sie das folgende Beispiel-JSON-Array:

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

Um die Stärke des Ritters zu ermitteln, können Sie die folgende Abfrage verwenden :

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

Einschränkungen und Überlegungen

  • Die JSON_TABLE-Funktion erfordert eine explizite Angabe von Attributen, was möglicherweise nicht praktikabel ist, wenn die Attribute unbekannt sind.
  • Das Definieren einer Ansicht mithilfe von JSON_TABLE kann den repetitiven Charakter der Erstellung dieser abgeleiteten Tabelle verringern.
  • Erwägen Sie die Normalisierung für komplexe JSON-Daten, um Abfragen zu vereinfachen und zu optimieren.

Das obige ist der detaillierte Inhalt vonWie finde ich einen bestimmten Wert in einem JSON-Array in MySQL?. 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