如何从 MySQL 数据库列中匹配包含反斜杠的值,例如 ‘a\\b’?


借助RLIKE运算符,我们可以执行这种匹配。唯一的概念是在MySQL查询中使用多个反斜杠。下面的例子会更清楚地说明这一点:

我们有如下表,其中包含诸如 ‘a\b’ 和 ‘a\\b’ 的值。

mysql> select * from backslashes;
+------+-------+
| Id   | Value |
+------+-------+
|    1 | 200   |
|    2 | 300   |
|    4 | a\b  |
|    3 | a\b   |
+------+-------+
4 rows in set (0.10 sec)

现在假设我们想匹配值 ‘a\\b’,我们需要写八个反斜杠。这是因为第二个反斜杠没有被第一个反斜杠转义,所以要比较两个字面量,我们需要将反斜杠加倍,但是当我们从MySQL字符串中查询表中这样的字符串时,这种加倍会发生两次——一次在客户端,一次在数据库中。因此,我们需要使用四倍的反斜杠,如下面的查询所示:

mysql> Select * from backslashes where value RLIKE 'a\\\\b';
+------+-------+
| Id   | Value |
+------+-------+
|    4 | a\b  |
+------+-------+
1 row in set (0.00 sec)

mysql> Select * from backslashes where value RLIKE 'a\\b';
+------+-------+
| Id   | Value |
+------+-------+
|    3 | a\b   |
+------+-------+
1 row in set (0.01 sec)

更新于:2020年6月22日

728 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.