Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich mehrere in einer einzelnen Datenbankspalte gespeicherte Werte abfragen?

Wie kann ich mehrere in einer einzelnen Datenbankspalte gespeicherte Werte abfragen?

DDD
Freigeben: 2024-12-16 10:04:20
Original
872 Leute haben es durchsucht

How Can I Query for Multiple Values Stored in a Single Database Column?

Abfragen nach mehreren Werten in einer Spalte

In relationalen Datenbanken enthalten Spalten normalerweise einzelne Werte für jede Zeile. In bestimmten Szenarien müssen Sie jedoch möglicherweise mehrere Werte in einer einzelnen Spalte speichern, getrennt durch Trennzeichen wie Kommas. Dies kann zu Herausforderungen beim Abfragen der Daten führen, da herkömmliche Operatoren wie der Gleichheitsoperator nicht mehr wie erwartet funktionieren.

Betrachten Sie beispielsweise die folgende Tabelle, in der Eltern-Kind-Beziehungen gespeichert sind:

id     name            children
1      Roberto         Michael,Dia
2      Maria           John,Alex
3      Mary            Alexandre,Diana
Nach dem Login kopieren

Wenn wir mithilfe der Abfrage versuchen, die Eltern zu finden, die ein Kind namens „Alex“ haben:

WHERE children = 'Alex'
Nach dem Login kopieren

werden wir keine Ergebnisse erhalten, obwohl Alex ein Kind ist Kind von Maria. Dies liegt daran, dass wir nach einer genauen Übereinstimmung suchen, die aufgrund der mehreren Werte in der Kinderspalte nicht vorhanden ist.

Um mit solchen Situationen umzugehen, müssen wir alternative Ansätze erkunden:

Normalisieren Sie das Schema:

Die ideale Lösung besteht darin, das Schema zu normalisieren und eine separate Tabelle für Kinder zu erstellen, mit einer separaten Zeile für jedes Kind und einem Verweis darauf Elternteil. Dies würde eine effiziente Abfrage basierend auf untergeordneten Namen ermöglichen.

Verwendung von FIND_IN_SET:

Wenn eine Normalisierung des Schemas nicht möglich ist, können Sie die Funktion FIND_IN_SET verwenden, die prüft, ob a Der Wert existiert in einer durch Kommas getrennten Liste. Die Abfrage wäre:

WHERE FIND_IN_SET('Alex', children)
Nach dem Login kopieren

Dies würde die Eltern zurückgeben, die ein Kind namens Alex haben. Es ist jedoch wichtig zu beachten, dass FIND_IN_SET nicht der effizienteste Ansatz ist und nur verwendet werden sollte, wenn eine Normalisierung nicht realisierbar ist.

Das obige ist der detaillierte Inhalt vonWie kann ich mehrere in einer einzelnen Datenbankspalte gespeicherte Werte abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage