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
Wenn wir mithilfe der Abfrage versuchen, die Eltern zu finden, die ein Kind namens „Alex“ haben:
WHERE children = 'Alex'
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)
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!