在oracle中的跳脫字元:1、單引號,用於參照字串或對自身跳脫;2、雙引號,用於將非法的格式符包裝起來;3、「&」也就是and符號,用於接連兩個跳脫自身;4、Escape,用於指定一個非特殊符號為跳脫符。
本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。
1、Oracle 特殊字元 跳脫
關鍵詞:oracle 跳脫
環境:oracle9i plsql
在plsql裡邊執行:
update userinfo set pageurl='myjsp?page=1&pagesize=10' where id='test'
這條sql語句往資料庫的pageurl欄位放進去了一個url地址,但是執行的時候卻並非那麼理想,因為這其中有一個oracle的特殊字元,需要進行跳脫,那就是字元'&'.
怎麼處理上例中的特殊字元?
兩個辦法:
1) update userinfo setpageurl='myjsp?page=1'||'&'||'pagesize=10' where id='test'
2) update userinfo setpageurl='myjsp?page=1'||chr(38)||'pagesize=10' where id='test'
其中||是連字元, chr(38)跟ASCII的字元轉碼是一致的。
plsql中還可以set define off來關閉特殊字元,還可以用show define來檢視有些特殊定義的字元。
2、oracle 中如何跳脫 特殊字元
問: 如何跳脫 下劃線 _
select * from ng_values where name like 'lady_%'
jieguo 結果顯示 lady_test,lady_test,lady1
正確結果應該是:lady_test,lady_test
不包括lady1
請各位給出跳脫方法,3ks
answer:
select ... from ... where ... like '/_%' escape '/';
3、
insert into t(col) values(chr(ascii('&'))) ;
(方法一)
例:插入特殊字元'&'
SQL> SHOW DEFINE define "&" (hex 26) ? <--- DEFINE的default值是 ‘&’ SQL> SET DEFINE OFF SQL> SHOW DEFINE define OFF SQL> INSERT INTO <table_name> VALUES ('AT&T');
/
1 row created
(方法二)
SQL> SHOW ESCAPE escape OFF <--- ESCAPE的default值是 OFF SQL> SET ESCAPE ON SQL> SHOW ESCAPE escape "\" (hex 5c) SQL> INSERT INTO temp_table VALUES ('select * from emp where ename =\&1');
1 row created.
;
幾個測試方法:
SELECT 'myjsp?page=1&pagesize=10' FROM dual; SELECT 'myjsp?page=1&pagesize=10' FROM dual; SQL> create table a (b varchar2(10)); Table created SQL> insert into a values('_a');
1 row inserted
SQL> select B from A where instr(b,'_a')>0; B ---------- _a select B from A where b like '%\_a%' escape '\'
先啟動跳脫符
set escape on
select B from A where b like '%\_a%' escape '\'; select B from A where b like '%\_a%' escape '\';
注意
在Oracle中雙引號」不是跳脫字元,因此儲存直接儲存就可以了,不需要跳脫了。
oracle跳脫符有:
1,單引號
在ORACLE中單引號有兩個作用:1)參照字串;2)對自身跳脫。
參照字串時,單引號是成對出現的;而對自身的跳脫,也必定是雙數的,所以,一個sql語句中,單引號必定是成對的.
Select 'abc' a,'' b, '''' c, ' '' ' d From Dual;
複雜跳脫字串可用連線符||拆分,便於理解。連線符號‘||’左右的單引號沒有任何的關係,除非‘||’是作為字串的一部分(這在動態SQL中很常見)。
Select 'name' || '''''' a, 'name''''' b From Dual; Output:name'' name''
2,雙引號
1)一般來說,字串中的雙引號僅僅被當作一個普通字元進行處理。
此時,雙引號不需要成對出現:
Select 'hh24"小時""mi""分"""ss"秒"' Results From Dual; Output:hh24"小時""mi""分"""ss"秒"
2)當出現在to_char的格式字串中時,雙引號有特殊的作用,就是將非法的格式符包裝起來,避免出現ORA-01821: date format not recognized錯誤。
也就是說,去掉雙引號和其包含的字元后,剩下的應該是一個合法的格式串。
to_char在處理格式字串時,會忽略雙引號:
Select To_Char(Sysdate, 'hh24"小時"mi"分"ss"秒"') As "當前時間/時分秒" From Dual;
Output:09小時05分08秒 --別名中也有此應用
格式串為'hh24"小時"mi"分"ss"秒"';
去掉雙引號部分後,剩下的是'hh24miss',是一個合法的格式串。
不過即使真不知道雙引號的這個用法,也可以這樣來處理,雖然麻煩一點:
Select To_Char(Sysdate, 'hh24') || '小時' || To_Char(Sysdate, 'mi') || '分' || To_Char(Sysdate, 'ss') || '秒' As Result From Dual;
Output:09小時05分08秒
3,&(and符號)
用來識別/設定自定義變數,後需跟變數名;如需作為字元使用,需使用Chr(38),或者接連兩個&&(跳脫自身)
Select Chr(38) a, 'Tom&&Jerry' b, 'Gun ''N Roses' c From Dual; Output:& Tom&Jerry Gun 'N Roses
4, Escape(指定跳脫符)
指定一個非特殊符號為跳脫符,多用在萬用字元跳脫
Select Table_Name From User_Tables Where Table_Name Like 'TB=_%=_%' Escape '='; Output:TB_STUDENT_SCORE--篩選以TB開頭,中間有兩個_的表名以上就是oracle的跳脫字元是什麼的詳細內容,更多請關注TW511.COM其它相關文章!