Он разочарован экранированием шаблона MySQL, используемым в операторе LIKE.
root@dev> create table foo(name varchar(255));
Query OK, 0 rows affected (0.02 sec)
root@dev> insert into foo values('with\\slash');
Query OK, 1 row affected (0.00 sec)
root@dev> insert into foo values('\\slash');
Query OK, 1 row affected (0.00 sec)
root@dev> select * from foo where name like '%\\\\%';
Empty set (0.01 sec)
root@dev> select * from foo;
+------------+
| name |
+------------+
| with\slash |
| \slash |
+------------+
2 rows in set (0.00 sec)
root@dev> select * from foo where name like '%\\\\%';
Empty set (0.00 sec)
root@dev> select * from foo where name like binary '%\\\\%';
+------------+
| name |
+------------+
| with\slash |
| \slash |
+------------+
2 rows in set (0.00 sec)
Согласно документам MySQL: http://dev.mysql.com/doc/refman/5.5/en/string-comparison-functions.html#operator_like %\\\\%
- правильный операнд, но почему он не дает результата?
РЕДАКТИРОВАТЬ: база данных, которую я тестирую, в которой для character_set_database установлено значение utf8.Для дальнейшего исследования я создал ту же настройку в базе данных, в которой для character_set_database установлено значение latin1, и угадайте, что, '%\\\\%'
работает!
РЕДАКТИРОВАТЬ: проблема может быть воспроизведена, и это проблема сопоставления полей.Подробности: http://bugs.mysql.com/bug.php?id=63829