Я не понимаю такого поведения MySQL: если я хочу отобразить a\b, я могу просто выбрать "a\\b"
, которые работают без проблем:
mysql> select "a\\b";
+-----+
| a\b |
+-----+
| a\b |
+-----+
1 row in set (0.05 sec)
Но если я хочу найти строку, содержащую \ в таблице, используя LIKE, мне нужно дважды экранировать мой "\". Почему ?
Вот пример.
Готовим небольшой стол.
create table test ( test varchar(255) );
insert into test values ( "a\\b" ) , ( "a\\b\\c" ) , ( "abcd" );
mysql> select * from test;
+-------+
| test |
+-------+
| a\b |
| a\b\c |
| abcd |
+-------+
3 rows in set (0.05 sec)
Мы пытаемся получить записи, начинающиеся с "a\b"...
mysql> select * from test where test LIKE "a\\b%";
+------+
| test |
+------+
| abcd |
+------+
1 row in set (0.05 sec)
Почему \\
там просто игнорируется? Почему мне нужно дважды экранировать basckslash, чтобы получить ожидаемый результат?
mysql> select * from test where test LIKE "a\\\\b%";
+-------+
| test |
+-------+
| a\b |
| a\b\c |
+-------+
2 rows in set (0.04 sec)