在字段里查找'%',涉及到Oracle的轉(zhuǎn)義字符,現(xiàn)總結(jié)如下:

創(chuàng)新互聯(lián)專注于坡頭網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供坡頭營銷型網(wǎng)站建設(shè),坡頭網(wǎng)站制作、坡頭網(wǎng)頁設(shè)計(jì)、坡頭網(wǎng)站官網(wǎng)定制、小程序設(shè)計(jì)服務(wù),打造坡頭網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供坡頭網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
SQL select * from test;
TEST
--------------------
sdd_kk
d'd
dfsfsa
dffa%asfs
12345
1%2345
1%54321
2%54321
%%54321
AB
已選擇9行。
其中包含特殊的字符分別為%,_,,有可能包含這些字符的數(shù)據(jù)含有錯誤,或者需要查找包含這些字符的數(shù)據(jù)。
SQL select * from test where test like 'sdd _%' escape ' ';
TEST
--------------------
sdd_kk
轉(zhuǎn)義字符為' ';
SQL select * from test where test like 'sdd\_%' escape '\';
TEST
--------------------
sdd_kk
轉(zhuǎn)義字符為'\';
SQL select * from test where test like 'sdd=_%' escape '=';
TEST
--------------------
sdd_kk
轉(zhuǎn)義字符為'=';
SQL select * from test where test like 'sdd/_%' escape '/';
TEST
--------------------
sdd_kk
轉(zhuǎn)義字符為'/';
SQL select * from test where test like 'sddd_%' escape 'd';
未選定行
轉(zhuǎn)義字符為d,沒有實(shí)現(xiàn)轉(zhuǎn)義功能;
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
但是''不能通過轉(zhuǎn)義字符查找:
SQL select * from test where test like '%\%' escape'\';
select * from test where test like '%\%' escape'\'
*
第 1 行出現(xiàn)錯誤:
ORA-01424: 轉(zhuǎn)義符之后字符缺失或非法
可以通過另外的方式進(jìn)行轉(zhuǎn)義:
SQL select ascii('') from dual;
ASCII('')
----------
38
SQL select * from test where test like '%'||chr(38)||'%';
TEST
--------------------
AB
'''的轉(zhuǎn)義:
SQL select * from test where test like '%''%';
TEST
--------------------
d'd
特殊符號的數(shù)據(jù)的插入
SQL insert into test values('testtest');
輸入 test 的值: test
原值 1: insert into test values('testtest')
新值 1: insert into test values('testtest') -雖然插入,但是數(shù)據(jù)不對。
已創(chuàng)建 1 行。
SQL show define
define "" (hex 26)
SQL set define off
SQL show define
define OFF
SQL insert into test values('testtest');
已創(chuàng)建 1 行。
SQL show escape
escape OFF
SQL set escape on
SQL show escape
escape "\" (hex 5c)
SQL insert into test values('test\test');
已創(chuàng)建 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');
已創(chuàng)建 1 行。
SQL insert into test values('test\_test');
已創(chuàng)建 1 行。
SQL insert into test values('test\'test);
insert into test values('test'test)
*
第 1 行出現(xiàn)錯誤:
ORA-00917: 缺失逗號
SQL insert into test values('test''test');
已創(chuàng)建 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:轉(zhuǎn)義。 單引號的使用是就近配對,即就近原則。而在單引號充當(dāng)轉(zhuǎn)義角色時(shí)相對不好理解1.從第二個單引號開始被視為轉(zhuǎn)義符,如果第二個單引號后面還有單引號(哪怕只有一個)。
begin
dbms_output.put_line('''abcd''');
end;
oracle中字符串中,單引號用兩個單引代表一個,也就是說單引號本身是轉(zhuǎn)義符
一、符號的處理方案
1、在前面加上語句set define off
首先要理解是做什么的,這個符合在Oracle中表示替代變量,執(zhí)行時(shí)會提示用戶輸入,然后以及后面的字符會替換為用戶輸入的字符。
set define off的作用是關(guān)閉替代變量功能。當(dāng)然你還可以把替代變量改為其它符號,比如改為*號,輸入這個命令:set define *
2、在SQL語句中將分拆并替換成chr(38)
38是的ASCII碼,實(shí)例sql
3、分拆出號,這也是最簡單直接的方法
二、符號'的處理方案
1、直接轉(zhuǎn)義
2、分拆轉(zhuǎn)義
3、分拆并替換成chr(39)
Oracle的模糊查詢也是一樣的,比如我要顯示第三個字符大寫為0的所有員工的的姓名和工資SQLSelect 姓名,工資 from 表單 where 姓名 Like"_ _ 0 %"%表示0到多個字符,"_"表示任意單個字符
分享題目:oracle'如何轉(zhuǎn)義,oracle 轉(zhuǎn)義特殊符號
標(biāo)題路徑:http://chinadenli.net/article33/dseohss.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站設(shè)計(jì)、移動網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)