So fragen Sie eine durch Kommas getrennte Spalte nach einem bestimmten Wert ohne redundante LIKE-Anweisungen ab
Datenbanktabellen enthalten häufig Spalten, die durch Kommas getrennt gespeichert werden Wertelisten. Um Zeilen abzurufen, die einen bestimmten Wert enthalten, können LIKE-Anweisungen verwendet werden. Die Verwendung mehrerer LIKE-Anweisungen kann jedoch umständlich und ineffektiv sein.
Nachteile der Verwendung von LIKE-Anweisungen
Im bereitgestellten Beispiel speichert die Tabelle Kategorien als durch Kommas getrennte Werte:
ID | CATEGORIES --------------- 1 | c1 2 | c2,c3 3 | c3,c2 4 | c3 5 | c4,c8,c5,c100
Um Zeilen zu finden, die „c2“ enthalten, könnte man Folgendes verwenden:
SELECT id FROM table WHERE categories LIKE '%c2%';
Dies würde jedoch auch Zeilen mit „c2“ an einer beliebigen Stelle in der Zeichenfolge finden, was zu falsch positiven Ergebnissen führen würde . Die Verwendung mehrerer LIKE-Anweisungen zur Prüfung auf bestimmte Kombinationen kann mühsam und fehleranfällig sein.
Alternativer Ansatz: Komma-getrennte Suche
Ein effizienterer Ansatz ist die Verwendung von a Durch Kommas getrennte Suche:
select * from YourTable where ',' || CommaSeparatedValueColumn || ',' LIKE '%,SearchValue,%'
Diese Abfrage sucht nach dem vollständigen Wert, der von Kommas umgeben ist, um genaue Übereinstimmungen sicherzustellen. Es gibt jedoch Einschränkungen, da in den Werten keine Leerzeichen oder Kommas vorausgesetzt werden.
Optimale Lösung: Separate Kategorietabelle
Um diese Einschränkungen zu vermeiden und die Leistung zu verbessern, ist es Es wird dringend empfohlen, eine separate Kategorietabelle zu erstellen, die mit einer Viele-zu-Viele-Beziehung mit der Haupttabelle verknüpft ist. Dies ermöglicht eine effiziente Abfrage und Datenbearbeitung ohne umständliche Zeichenfolgenoperationen oder das Risiko falscher Übereinstimmungen.
Das obige ist der detaillierte Inhalt vonWie kann eine durch Kommas getrennte Spalte effizient nach einem bestimmten Wert abgefragt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!