首页 > 技术文章 > oracle sql查询转义下划线

yinliang 2016-12-01 09:47 原文

1,看以下结果 

select * from test where login like '%CF_%';

LOGIN
--------------------------------------------------
CF_wwwwwww4
CF_wwwwwww5
CF_wwwwwww6
CF1
CF2
CF3

因为_是转义字符 把CF1,CF2,CF3的结果也查出来了 而我们的目的 是不需要转义符

的,只需要CF_wwwwwww4
CF_wwwwwww5
CF_wwwwwww6

这三条记录

所以做如下处理就可以了

set   escape   on 

这个在默认情况下就是打开的

select * from test where login like '%CF\_%' escape   '\';

LOGIN
--------------------------------------------------
CF_wwwwwww4
CF_wwwwwww5
CF_wwwwwww6

以上测试的login是varchar2类型的

如果是nvarchar2类型的,

按上面那写法写会报错,报错如下信息:

SQL> select * from tgsj_infodb_flow where flowname like '%c\%%' escape '\';

select * from tgsj_infodb_flow where flowname like '%c\%%' escape '\'

ORA-01425: 换码符必须是长度为 1 的字符串

下面这种写法才是正确的

SQL> select * from tgsj_infodb_flow where flowname like '%c\%%' escape nchr(92);

        ID FLOWNAME
---------- ----------------------------------------
         3 qabc%ddd

SQL

 

推荐阅读