2016-04-20 7 views
1

Ich habe eine Personen Tabelle mit einem nativen JSON Feld/Spalte namens "JSON". Die erste Reihe meiner Tabelle hat diesen Inhalt in der Spalte json:MySQL 5.7 mit nativer JSON-Unterstützung - wie wählt man Zeilen aus, in denen ein bestimmter Wert in einem Array existiert?

{"misc": [{"sdsd": "sdsdsd"}], "size": 178, "social": {"skype": "4455454", "myspace": "fw2121ege", "twitter": "wr4541", "facebook": "frfsfsfasfsf"}, "mobility": ["forklift_sparkle", "license_for_passenger_transport", "car", "driver_license"], "piercing": true, "shoesize": 43, "trousers": {"width": 32, "length": 32}, "haircolor": "black", "shoe_size": 43, "additional_career": [{"ddgdgdg": "dggdgddg"}], "additional_social": [{"StudiVZ": "sfsfsfsf"}], "additional_language": [{"gfggfgf": "good"}], "additional_mobility": ["sfsf"]} 

oder hier gut formatiert:

http://www.jsoneditoronline.org/?id=bcceb2f1ec208ea23737ee32c1ccc5a3

Also - meine Frage ist: Wie kann ich, wenn der Wert zu suchen " Auto "existiert im Objekt" Mobilität "? Diese

(mit JSON_CONTAINS)

SELECT * FROM `Persons` WHERE JSON_SEARCH(`persons`.`json`, 'all', 'car', NULL, '$.mobility[*]') 

(gibt kein Ergebnis):

funktioniert das nicht:

SELECT * FROM `Persons` WHERE JSON_EXTRACT(`persons`.`json`,"$.mobility[*]") = 'car' 

(kein Ergebnis gibt)

auch nicht funktioniert funktioniert auch nicht:

SELECT * FROM `Persons` WHERE JSON_CONTAINS(`persons`.`json`, 'car', "$.mobility") 

(gibt Fehler: SELECT * FROM Persons WHERE JSON_CONTAINS (persons. json, 'Auto', "$ .mobility"))

aber dies funktioniert gut:

SELECT * FROM `Persons` WHERE JSON_CONTAINS(`persons`.`json`, '178', "$.size") 

Ich denke, es ist ein Problem, weil "Mobilität" ein Array enthält ... aber wie zu wählen, wenn ein Element existiert in diesem Array "Mobilität"?

Antwort

4

Versuchen:

SELECT * 
FROM `Persons` 
WHERE JSON_CONTAINS(`Persons`.`json`, '["car"]', '$.mobility'); 
+0

Thank u so viel, das funktioniert !! – goldlife

Verwandte Themen