sql 查询名字中有_的员工
select * from emp where ename like '%\_%' escape '\' ;\可以换作任意的字符
select * from emp where ename like '%\%%' escape '\';
但是'&'不能通过转义字符查找
如果按上面的写法,
select * from emp where ename like '%\&' escape '\';
会提示:ORA-01424: 转义符之后字符缺失或非法
可以通过另外的方式进行转义:
select ascii('&') from dual;
ASCII('&')
----------
38
select * from emp where ename like '%' || chr(38) || '%';
在oracle中chr()函数和ascii()是一对反函数
chr()函数将ASCII码转换为字符:ASCII码 --> 字符
ascii('字符')函数获得该字符的ascii码值,将字符转换为ASCII码:字符 --> ASCII码
但是,注意%不能用这种方法转义(%号的ascii码为37)因为转出来还是一个%号,还是会当做通配符找出所有的数据