Ich muss mit dieser Abfrage nach einem PDF-Handbuch suchen:
root@localhost:test> select * from a where name like '%taz_manual%.pdf%';
+--------------------+------------------+-------------+
| name | description | size |
+--------------------+------------------+-------------+
| taz-manual-1.1.pdf | Manual v1.0 TA-Z | 31351902 |
| taz-manual-0.2.pdf | Manual v1.0 T1-A | 3578278 |
| taz_manual-2.0.pdf | Manual v2.0 GA-X | 542578278 |
etc........
+--------------------+------------------+-------------+
132 row in set (0.00 sec)
Warum sehe ich den mit Bindestrichen, wenn ich den Namen angeben soll taz_manual%.pdf
?
LIKE
Aussage. Beim Ersetzen aller_
durch-
:UPDATE sys_file set identifier = REPLACE(identifier, '_', '-') WHERE identifier LIKE '%\_%';
. Beachten Sie das Entweichen im InnerenLIKE
und kein Entweichen im InnerenREPLACE
. (Ich finde es allerdings seltsam, dass Sie sich nicht in einem Musterkontext innerhalb ersetzen ...)Ich hatte ein ähnliches Problem mit Leerzeichen und Bindestrichen beim Abgleichen von Zeichenfolgen mit exakter Übereinstimmung:
Die obige Abfrage hat keine Datensätze in MySQL zurückgegeben. Ich musste die Leerzeichen und Bindestriche verlassen und
LIKE
anstelle der exakten Übereinstimmung mit equals (=) Folgendes verwenden:quelle