我们如何匹配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)