【SQL】通配符及转义符

来源:互联网 发布:arch linux 龙芯 编辑:程序博客网 时间:2024/05/23 19:30

sql中,在like操作符里,%代表一个或多个字符,而_代表一个(仅仅一个)字符。


SQL> create table qt1(name varchar2(10));



表已创建。


SQL> insert into qt1 values('ABCD');


已创建 1 行。


SQL> insert into qt1 values('_BCDE');


已创建 1 行。


SQL> insert into qt1 values('_\BCDE');


已创建 1 行。


SQL> insert into qt1 values('_''BCDE');


已创建 1 行。


SQL> commit;


提交完成。


SQL> select * from qt1;


NAME
----------
ABCD
_BCDE
_\BCDE
_'BCDE


SQL>

ok,我们要查询记录的name字段包含BCD的记录,怎么写?



SQL> select * from qt1 where name like '%BCD%';


NAME
----------
ABCD
_BCDE
_\BCDE
_'BCDE

SQL>

很明显,返回结果是正确的。

我们要包含_BCD的记录,怎么写?



SQL> select * from qt1 where name like '_BCD%';


NAME
----------
ABCD
_BCDE

SQL> 

很明显,返回结果不对,第一条记录是不想要的。


SQL> select * from qt1 where name like '\_BCD%' escape '\';


NAME
----------
_BCDE


SQL>

这下对了。那么我们需要返回_\BCDE呢?



SQL> select * from qt1 where name like '\_\\BCD%' escape '\';


NAME
----------
_\BCDE


SQL>

需要返回_'BCDE呢?



SQL> select * from qt1 where name like '\_\'BCD%' escape '\';
ERROR:
ORA-01756: 引号内的字符串没有正确结束




SQL> select * from qt1 where name like '\_''BCD%' escape '\';


NAME
----------
_'BCDE


SQL>


所以,需要对单引号进行转义时,只能在单引号前面再添加一个单引号来进行转义,而使用escape声明的的转义符不行。

0 0
原创粉丝点击