我有一个有趣的行为,我想更好地理解,所以我不会被误解,偶然误用它.
以下是在WHERE子句中转义'%'的示例:
select * from #z where b like '%e%' ESCAPE 'e'
Run Code Online (Sandbox Code Playgroud)
在此表中包含以下值:
create table #z (a int, b varchar(10))
insert into #z values (1, 'e25%')
insert into #z values (2, '25')
insert into #z values (3, '18%')
insert into #z values (4, 'cab')
insert into #z values (5, '2%')
Run Code Online (Sandbox Code Playgroud)
选择末尾带有%的三行.
但是,如果我like '%e%'用like 'ee%'它替换它只选择第一行.因此,看起来双重逃避%就像一个双重否定,并撤消逃逸,从而使%再次回到通配符.我理解正确吗?或者还有其他事情发生在这里?
我实际上并没有使用ESCAPE:我总是发现它很奇怪.在这种情况下,你逃脱了第二次,e所以你得到like 'e%'(没有逃脱)
就个人而言,我like '%[%]'尽可能使用它(没有逃脱)