2017-01-29 2 views
0

auswählen So habe ich dieses Text (Varchar) -Feld in der Datenbank, die JSON mit IDs z. B. {1,2} Wie passen ich in einer Where-Klausel eine dieser IDs.In sql, wie aus einem JSON-Feld

Ich benutze auch eloquent Ich konnte keine Antwort in ihren Dokumenten finden.

+0

Willkommen bei StackOverflow! Können Sie bitte etwas Code/Details zu Ihrer Frage hinzufügen? Es wäre viel einfacher, eine Antwort zu finden, wenn Sie erklären, wie die Dinge, die Sie erwähnen (textbox, json, sql) miteinander verwandt sind. Zeig uns etwas Code! – ventiseis

+0

Sie nicht. So verwenden Sie keine relationale Datenbank. – AbraCadaver

+0

um eine der IDs in diesem JSON-Feld zu finden, könnte ich immer die ganze Zeile abrufen und dann jede Zeile durchlaufen und dann die Zeilen filtern, die nicht übereinstimmen. Ich habe mich nur gefragt, ob es eine Möglichkeit gibt, sie durch die SQL zu filtern. –

Antwort

0

Sie haben ein "PHP" -Tag zusammen mit Ihrer Frage, also könnte eine PHP-Lösung beträchtlich sein?

Entweder Sie könnten eine UDF für das Parsen von JSON für MySQL verwenden wie: https://github.com/ChrisCinelli/mysql_json

aber ein besserer Weg wäre, das JSON-Objekt auszuwählen und es in PHP mit json_decode zu analysieren() (http://php.net/manual/en/function.json-decode.php) und dann die Daten konvertieren zu einem passenderen Datenbankschema für Ihre Absichten.

Es ist selten optimal, eine native SQL-Anweisung für JSON-codierte Daten zu verwenden.

Ich würde eine neue Tabelle mit der richtigen Indizierung erstellen und dann eine PHP-Funktion/Methode erstellen, um die JSON-Daten zu dekodieren und in eine neue Tabelle einzufügen.

0

Sie könnten eine Art von "String enthält" oder Regex-Logik verwenden, aber das ist fehleranfällig. Die meisten Datenbanken bieten jedoch Unterstützung für das Speichern und Abfragen von JSON in der Datenbank, z. wie JSON data type in MySQL. Hoffe das hilft.

Verwandte Themen