Ich habe JSON-Arrays als Zeichenfolgen in einer MariaDB-Tabelle gespeichert. Ich möchte die Zeilen zurückgeben, wenn bestimmte Schlüsselwerte irgendwo im Array vorhanden sind.MariaDB JSON Funktionen mit Arrays
Ich führte den folgenden Test ....
set @json='[{"name":"Albert","state":"IL"},{"name":"John","state":"CA"}]'
die folgende Abfrage Ausgeführt ...
select json_value(@json,'$[0].name')='Albert'
Es hat mich um das gewünschte Ergebnis, das ist ...
1
Auch die folgende Abfrage gab mir auch das gleiche Ergebnis (möglicherweise wird '*' als erstes Element behandelt) ...
select json_value(@json,'$[*].name')='Albert'
Aber als ich den zweiten Namen ("John") in dem Zustand zur Verfügung stellen, ich bekomme kein Ergebnis ...
select json_value(@json,'$[*].name')='John'
Ergebnis ...
0
Meine Beobachtung ist also, dass die "json_value" -Funktion das gewünschte Ergebnis liefern kann, wenn wir den Array-Index bereitstellen.
Gibt es eine Möglichkeit, den Array-Index nicht anzugeben und den gewünschten Schlüsselwert zu suchen?
Versuchen [JSON_SEARCH] (https://mariadb.com/kb/en/library/json_search/), siehe [dbfiddle] (http://dbfiddle.uk/?rdbms=mariadb_10.2&fiddle=4620e2cf592fda2a9dd788ec5f98962a). – wchiquito