Heim  >  Artikel  >  Datenbank  >  Wie kann eine durch Kommas getrennte Spalte effizient nach einem bestimmten Wert abgefragt werden?

Wie kann eine durch Kommas getrennte Spalte effizient nach einem bestimmten Wert abgefragt werden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-03 17:02:29381Durchsuche

How to Efficiently Query a Comma-Separated Column for a Specific Value?

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!

Stellungnahme:
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