1、”“ 轉(zhuǎn)義

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:主機域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、自貢網(wǎng)站維護(hù)、網(wǎng)站推廣。
這個是Oracle里面用來識別自定義變量的設(shè)置,現(xiàn)在我們在SQL*PLUS下將其關(guān)閉:
SQL Set define OFF;
然后再次執(zhí)行導(dǎo)入腳本,OK!問題搞定。
注意:如果是在TOAD中執(zhí)行,建議在每一個要導(dǎo)入的腳本第一行加上前面那句關(guān)閉define的話,否則當(dāng)你導(dǎo)入第二個含有特殊字符的腳本的時候,又會出錯。
如果是在SQL*PLUS中執(zhí)行,則只需要設(shè)置一次define OFF,后面就可以連續(xù)導(dǎo)入了。直到你重新設(shè)置define ON為止。
·方法二:在SQL語句中將''替換成chr(38),因為chr(38)是‘’的ASCII碼
SQL Select 'Tom' || chr(38) || 'Jerry' from dual;
·方法三:分拆原來的字符串
SQL Select 'Tom' || '' || 'Jerry' from dual;
我們可以看到,方法一最為簡便,而且效率也最高。方法二因為有一個調(diào)用函數(shù)的過程,所以性能稍差。方法三需要兩次連接字符串,效率最差!
2、” ' “ 轉(zhuǎn)義
·方法一:使用轉(zhuǎn)義字符
SQL Select 'test' || '''' from dual;
第三個'才是我們真正的內(nèi)容
·方法二:同樣是使用轉(zhuǎn)義字符,只不過方式不同而已
SQL Select 'test ''' from dual;
注意:這里的第二個,第三個'就是我們上面方法一中提到的轉(zhuǎn)義符和真正的內(nèi)容
在ORACLE中,單引號有兩個作用: 1:字符串是由單引號引用 2:轉(zhuǎn)義。 單引號的使用是就近配對,即就近原則。而在單引號充當(dāng)轉(zhuǎn)義角色時相對不好理解1.從第二個單引號開始被視為轉(zhuǎn)義符,如果第二個單引號后面還有單引號(哪怕只有一個)。
select replace('A','A','''A'',''B''') from dual
不知道這種效果是不是你想要的。上邊是我測試的sql。將A替換為'A','B'
如果將'A'替換為'A','B' 應(yīng)該是 replace('A','''A''','''A'',''B''')
' 在oracle中需要使用''來轉(zhuǎn)義。
帶有單引號或者符號的字符串,需要轉(zhuǎn)義。
'單引號用連續(xù)的兩的單引號取代。
符號用兩個連續(xù)的符號取代
輸出
wo
shi
'lanzhoudaxue'
de
xuesheng,可以這樣寫
begin
dbms_output.put_line('wo
shi
''lanzhoudaxue''
de
xuesheng');
end;
1、在轉(zhuǎn)義特殊字符的時候通常使用的就是單引號。但這種轉(zhuǎn)義方式很不直觀。
2、在oracle中使用q' 來對特殊字符進(jìn)行轉(zhuǎn)義。q'轉(zhuǎn)義符通常后面使用!? []? ?{}? ()? 等轉(zhuǎn)義符號。
3、也可以使用\ 。
4、也可以使用。
5、用上述的方法不僅直觀而且也不容易出錯。如果依然使用''? ?""這種方式的話很容易在書寫的時候出現(xiàn)各種錯誤,而且不容易排錯。
6、如圖下錯誤,如果出現(xiàn)這種情況使用q'進(jìn)行轉(zhuǎn)義很容易就可以看出錯誤的原因,而且也很方便。所以建議多使用q進(jìn)行轉(zhuǎn)義。
在字段里查找'%',涉及到Oracle的轉(zhuǎn)義字符,現(xiàn)總結(jié)如下:
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,沒有實現(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逗號如何轉(zhuǎn)義,oracle符號轉(zhuǎn)義
網(wǎng)頁地址:http://chinadenli.net/article26/hshocg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站建設(shè)、App開發(fā)、域名注冊、企業(yè)網(wǎng)站制作、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)