oracle 的转义字符

来源:互联网 发布:dos软件下载 编辑:程序博客网 时间:2024/06/14 00:03


SQL> select * from test where test like 'sdd _%'escape ' ';

TEST
--------------------
sdd_kk

       转义字符为' ';

SQL> select * from test where test like 'sdd\_%'escape '\';

TEST
--------------------
sdd_kk

转义字符为'\';


SQL> select * from test where test like 'sdd=_%'escape '=';

TEST
--------------------
sdd_kk

       转义字符为'=';

SQL> select * from test where test like 'sdd/_%'escape '/';

TEST
--------------------
sdd_kk

         转义字符为'/';

SQL> select * from test where test like 'sddd_%'escape 'd';

未选定行

       转义字符为d,没有实现转义功能;

SQL> select * from test where test like '%\_%' escape'\';

TEST
--------------------
sdd_kk

       查找包含所有'_'的字段。

       同理:通过这种方法查找含有'%'的所有字段:

SQL> select * from test where test like '%\%%' escape'\';

TEST
--------------------
dffa%asfs
1%2345
1%54321
2%54321
%%54321

       但是'&'不能通过转义字符查找:

SQL> select * from test where test like '%\&%'escape'\';
select * from test where test like '%\&%' escape'\'
                                  *
第 1 行出现错误:
ORA-01424: 转义符之后字符缺失或非法

       可以通过另外的方式进行转义:

SQL> select ascii('&') from dual;

ASCII('&')
----------
       38

SQL> select * from test where test like'%'||chr(38)||'%';

TEST
--------------------
A&B

          '''的转义:

SQL> select * from test where test like'%''%';

TEST
--------------------
d'd

特殊符号的数据的插入

SQL> insert into test values('test&test');
输入 test 的值: test
原值    1:insert into test values('test&test')
新值    1:insert into testvalues('testtest')         -虽然插入,但是数据不对。

已创建 1 行。

SQL> show define
define "&" (hex 26)
SQL> set define off
SQL> show define
define OFF
SQL> insert into test values('test&test');

已创建 1 行。

SQL> show escape
escape OFF
SQL> set escape on
SQL> show escape
escape "\" (hex 5c)
SQL> insert into test values('test\&test');

已创建 1 行。

SQL> select * from test;

TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
testtest

TEST
--------------------
test&test
test&test

已选择13行。

SQL> commit;

提交完成。

SQL> select * from test;

TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
A&B
testtest

TEST
--------------------
test&test
test&test

已选择13行。

SQL> insert into test values('test\%test');

已创建 1 行。

SQL> insert into test values('test\_test');

已创建 1 行。

SQL> insert into test values('test\'test);
insert into test values('test'test)
                             *
第 1 行出现错误:
ORA-00917: 缺失逗号


SQL> insert into test values('test''test');


原创粉丝点击