oracle的轉義字符是什么

oracle中的轉義字符:1、單引號,用于引用字符串或對自身轉義;2、雙引號,用于將非法的格式符包裝起來;3、“&”也就是and符號,用于接連兩個轉義自身;4、Escape,用于指定一個非特殊符號為轉義符。

oracle的轉義字符是什么

本教程操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。

oracle的轉義字符是什么

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&gt;?SHOW?DEFINE define?"&amp;"?(hex?26)????SET?DEFINE?OFF SQL&gt;?SHOW?DEFINE define?OFF SQL&gt;?INSERT?INTO?<table_name>?VALUES?('AT&amp;T');</table_name>

/

1 row created

(方法二)

SQL&gt;?SHOW?ESCAPE escape?OFF??SET?ESCAPE?ON SQL&gt;?SHOW?ESCAPE escape?""?(hex?5c) SQL&gt;?INSERT?INTO?temp_table?VALUES?('select?*?from?emp?where?ename?=&amp;1');

1 row created.

幾個測試方法:

SELECT?'myjsp?page=1&amp;pagesize=10'?FROM?dual; SELECT?'myjsp?page=1&amp;pagesize=10'?FROM?dual; SQL&gt;???create???table???a??(b???varchar2(10));?? Table???created?? SQL&gt;???insert???into???a??values('_a');

1? ?row? ?inserted??

SQL&gt;???select???B???from??A???where???instr(b,'_a')&gt;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&amp;&amp;Jerry'?b,?'Gun?''N?Roses'?c?From?Dual; Output:&amp;????Tom&amp;Jerry????Gun?'N?Roses

4, Escape(指定轉義符)

指定一個非特殊符號為轉義符,多用在通配符轉義

Select?Table_Name?From?User_Tables?Where?Table_Name?Like?'TB=_%=_%'?Escape?'='; Output:TB_STUDENT_SCORE--篩選以TB開頭,中間有兩個_的表名

推薦教程:《Oracle視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享