我在MySQL中有一个字符串,当我选择使用like时,它什么也不返回。经过一些调查,我发现MySQL的一个奇怪的行为。
select a,a=a,a like a from (
select '123' as a union all
select '\\"'
)x
实验结果:
| 一种|a=a|一个像一个|
| - -|- -|- -|
| 一百二十三|一个|一个|
| “|一个|第0页|
http://sqlfiddle.com/#!9/9eecb/313965
我认为a like a
应该总是返回1(a=null
除外)
1条答案
按热度按时间mklgxw1f1#
在MySQL的
LIKE
表达式中,反斜杠保留了一个特殊的含义,即转义它后面的字符。这是必需的,例如,如果我们想在LIKE
表达式中包含文字下划线。请注意以下事实:
这是因为
LIKE
表达式中的反斜杠是文字,用于转义双引号。以下两个表达式是相同的:在这里,
LIKE
后面的双反斜杠被解释为双转义双引号。您尝试执行的操作的正确版本是:
这里的LHS是一个字面反斜杠后面跟双引号。RHS需要 * 四 * 个反斜杠作为字面反斜杠。