MySQL оператор LIKE с подстановочным знаком и обратной косой чертой

Он разочарован экранированием шаблона 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

6
задан EnToutCas 21 December 2011 в 20:04
поделиться