Мне нужно найти руководство в формате PDF, используя этот запрос:
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)
Почему, когда я указываю имя, я вижу то, что обозначено тире taz_manual%.pdf
?
LIKE
заявления. При замене всех_
с-
:UPDATE sys_file set identifier = REPLACE(identifier, '_', '-') WHERE identifier LIKE '%\_%';
. Обратите внимание на побег внутриLIKE
и на отсутствие побега внутрьREPLACE
. (Мне кажется странным, что вы не находитесь в контексте шаблона внутри replace ...)У меня была аналогичная проблема с пробелом и дефисами при сопоставлении строк с точным соответствием:
Вышеупомянутый запрос не вернул никаких записей в MySQL. Мне пришлось избегать пробелов и дефисов и использовать
LIKE
вместо точного совпадения equals (=) следующим образом:источник