为了更好的理解ESCAPE转义字符,我们首先建立一个view作为数据源
create or replace view v as
select 'ABCEDF' as vname from dual union all
select '_bcefg' from dual union all
select '_bcedf' from dual union all
select '_\bcedf' from dual union all
select '_%bcedg' from dual union all
select 'xycef' from dual;
查询看下结果:
select * from v;
要求:查出vname中包含_ced的记录
select * from v where vname like '_bce%'
结果多了一个abcef记录。因为like子句中有两个通配符“%”“_”
这里“_”被当做的通配符,我们需要给它转义成字符串“_”。
下面操作:
select * from v where vname like '\_bce%' escape '\';
总结:escape '\' 起到转义的作用。 \后面的_不再是通配符的作用了而是字符串的意思。
如果没有oracle环境执行sql,可以试试下面的地址: