Kommagetrennte Liste in Datenbanken…

Prominentes Beispiel für kommagetrennte Listen auf Datenbank-Ebene ist Typo3. Dort werden 1:N-Relationen auch durch eine kommagetrennte Liste repräsentiert. Es gibt dann z. B. eine Spalte books in einem Datensatz author. In dieser Spalte werden kommagetrennt die UIDs der referenzierten Datensätze (Bücher) hinterlegt.

Die Frage ist nun, wie über solch eine Spalte Abfragen durchgeführt werden können. Beispielsweise möchte man alle Autoren eines bestimmten Buches abfragen…

Die Lösung ist unter MySQL die String-Funktion FIND_IN_SET. Sie nimmt zwei Parameter entgegen:

mysql> SELECT FIND_IN_SET('b','a,b,c,d');
        -> 2

 

Kommentar verfassen