我不理解这种 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)