SQL> select * from test;
TEST -------------------- sdd_kk d'd dfsfsa dffa%asfs 12345 1#45 1T321 2T321 %T321 A&B
已选择9行。
其中包含特殊的字符分别为%,_,&,有可能包含这些字符的数据含有错误,或者需要查找包含这些字符的数据。
=============
转义字符为' ': SQL> select * from test where test like 'sdd _%' escape ' ';
TEST -------------------- sdd_kk
注:sdd与_之间有空格。
==================================
转义字符为'\':
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
==================================
转义字符为d,没有实现转义功能:SQL> select * from test where test like 'sddd_%' escape 'd';
未选定行
==================================
查找包含所有'_'的字段:SQL> select * from test where test like '%\_%' escape '\';
TEST -------------------- sdd_kk
==================================
同理:通过这种方法查找含有'%'的所有字段:
SQL> select * from test where test like '%\%%' escape '\';
TEST -------------------- dffa%asfs 1#45 1T321 2T321 %T321
==================================
但是'&'不能通过转义字符查找:
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 test values('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#45 1T321 2T321 %T321 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#45 1T321 2T321 %T321 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');
已创建 1 行。
SQL> select * from test;
TEST -------------------- sdd_kk d'd dfsfsa dffa%asfs 12345 1#45 1T321 2T321 %T321 A&B testtest
TEST -------------------- test&test test&test test%test test_test test'test
已选择16行。