Hi,
das zweite der folgenden beiden Kommandos kann ich gut nachvollziehen, nicht jedoch das erste...
Code:
mysql> SELECT '\n' LIKE '\n', '\n' LIKE '\\n';
+---------------+---------------+
| '\n' LIKE '\n' | '\n' LIKE '\\n' |
+--------------+----------------+
| 1 | 0 |
+--------------+----------------+
mysql> SELECT '\\n' LIKE '\\n', '\\n' LIKE '\\\\n';
+----------------+-------------------+
| '\\n' LIKE '\\n' | '\\n' LIKE '\\\\n' |
+-----------------+------------------+
| 0 | 1 |
+-----------------+-------------------+
Im Manual steht dazu:
Zitat:
|
Hinweis: Weil MySQL die C-Escape-Syntax in Strings verwendet (z. B. ‘\n’ zur Darstellung eines Zeilenwechsels), müssen Sie jedes ‘\’, das Sie in LIKE-Strings verwenden, verdoppeln. Um beispielsweise nach ‘\n’ zu suchen, geben Sie es als ‘\\n’ an. Um nach ‘\’ zu suchen, geben Sie es als ‘\\\\’ an; dies ist erforderlich, weil Backslashs einmal vom Parser und dann noch einmal bei Durchführung des Mustervergleichs umgewandelt werden – so bleibt für den Vergleich ein einzelner Backslash übrig.
|
Wieso trifft dann
'\n' LIKE '\n' zu, nicht aber
'\n' LIKE '\\n', wie im Manual beschrieben? Im zweiten Beispiel werden doch zweimal Backslashes umgewandelt, so dass genau das eigentliche Neue-Zeichen übrig bleibt...