18.
Mrz 10
Manchmal kommt der Webentwickler nicht drumherum Werte in Trennzeichen getrennten Listen zu speichern. Für diesen Fall bieten sich die sogenannte Suche über Wortgrenzen mit MySQL an. MySQL definiert Wörter als alnum. Z. B. das Zeichen “|” gehört nicht zur Klasse alnum. Daher kann es als Trenner für Wortgrenzen eingesetzt werden [...]
Das folgende Statement:
1
| SELECT myColumn FROM myTable WHERE mySearchColumn REGEXP "[[:< :]]1[[:>:]]" |
findet in einer Trennzeichen getrennten Liste von Zeichen ein Element dieser Gruppe. Z. B.
Datensatz 1, Feld mySearchColumn: 1|11|21 (match)
Datensatz 2, Feld mySearchColumn: 11|12 (kein match)
Datensatz 3, Feld mySearchColumn: 1 (match)
Die Suche über Wortgrenzen bietet den Vorteil, daß auch nach mehreren Übereinstimmungen innerhalb einer Liste gesucht werden kann. Die Suche über LIKE %1% würde im o. g. Beispiel auf alle 3 Datensätze matchen.
Bitte vergesst aber nicht, daß es auch noch das Normalisieren von Datenstrukturen gibt – also achtet darauf, ob es um eine “schöne” und flexible Lösung handelt …
Weiterführender Link:
http://dev.mysql.com/doc/refman/5.1/de/regexp.html