十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
在字段里查找'%',涉及到Oracle的转义字符,现总结如下:
“只有客户发展了,才有我们的生存与发展!”这是成都创新互联公司的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对成都网站设计、做网站、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。
SQL select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
AB
已选择9行。
其中包含特殊的字符分别为%,_,,有可能包含这些字符的数据含有错误,或者需要查找包含这些字符的数据。
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
--------------------
AB
'''的转义:
SQL select * from test where test like '%''%';
TEST
--------------------
d'd
特殊符号的数据的插入
SQL insert into test values('testtest');
输入 test 的值: test
原值 1: insert into test values('testtest')
新值 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('testtest');
已创建 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
AB
testtest
TEST
--------------------
testtest
testtest
已选择13行。
SQL commit;
提交完成。
SQL select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
AB
testtest
TEST
--------------------
testtest
testtest
已选择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%2345
1%54321
2%54321
%%54321
AB
testtest
TEST
--------------------
testtest
testtest
test%test
test_test
test'test
已选择16行。
在ORACLE中,单引号有两个作用: 1:字符串是由单引号引用 2:转义。 单引号的使用是就近配对,即就近原则。而在单引号充当转义角色时相对不好理解1.从第二个单引号开始被视为转义符,如果第二个单引号后面还有单引号(哪怕只有一个)。
带有单引号或者符号的字符串,需要转义。
'单引号用连续的两的单引号取代。
符号用两个连续的符号取代
输出
wo
shi
'lanzhoudaxue'
de
xuesheng,可以这样写
begin
dbms_output.put_line('wo
shi
''lanzhoudaxue''
de
xuesheng');
end;
select replace('A','A','''A'',''B''') from dual
不知道这种效果是不是你想要的。上边是我测试的sql。将A替换为'A','B'
如果将'A'替换为'A','B' 应该是 replace('A','''A''','''A'',''B''')
' 在oracle中需要使用''来转义。