FIND_IN_SET() durchsucht eine komma-separierte 'Liste' von Strings (z.B. 1,3,45,wasweissich) mit einem Suchstring (z.B. 45); in der Regel gibt diese Fun ktion die Stelle des erstern Vorkommens des Suchstring zurück (hier 3).
Allerdings: ist in der Suchliste nur EIN String vorhanden, dann gibt die Funktion nichts zurück bzw 0.
Also: FIND_IN_SET() ist nur dann 'sinnvoll' anzu wenden, wenn mindesten 2 Strings in der Suchliste vorhanden sind.
Wobei mich das auf folgende Ergänzung zu meinem Beispiel mit CONCAT bringt:
Wenn in der Spalte Zutaten ebenfalls nur EIN Wert enthalten ist, dann ist das Ergebnis ebenfalls leer=es werden keine Datensätze zurückgegeben.
Beispiel:
ID Name Zutat
23 xyz 4
Damit auch dieser Datensatz gefunden wird, ist die WHERE-Klausel dann so zu ergänzen:
Der Inhalt des Feldes zutaten wird also am Anfang und am Ende mit einem Komma versehen, so dass die 'suchmaske' dann auch in o.a. Sonderfall greift
In Deinem Fall ist also CONCAT() zu bevorzugen.
Allerdings: ist in der Suchliste nur EIN String vorhanden, dann gibt die Funktion nichts zurück bzw 0.
Also: FIND_IN_SET() ist nur dann 'sinnvoll' anzu wenden, wenn mindesten 2 Strings in der Suchliste vorhanden sind.
Wobei mich das auf folgende Ergänzung zu meinem Beispiel mit CONCAT bringt:
Wenn in der Spalte Zutaten ebenfalls nur EIN Wert enthalten ist, dann ist das Ergebnis ebenfalls leer=es werden keine Datensätze zurückgegeben.
Beispiel:
ID Name Zutat
23 xyz 4
Damit auch dieser Datensatz gefunden wird, ist die WHERE-Klausel dann so zu ergänzen:
Code:
...
WHERE CONCAT(',', zutaten, ',') LIKE '%,4,%'
In Deinem Fall ist also CONCAT() zu bevorzugen.