首頁 >資料庫 >Oracle >oracle的轉義字元是什麼

oracle的轉義字元是什麼

WBOY
WBOY原創
2022-01-25 14:12:487673瀏覽

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

oracle的轉義字元是什麼

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

oracle的轉義字是什麼

1、Oracle 特殊字元轉義

關鍵字:oracle    轉義               i 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 (&#39;AT&T&#39;);

/

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 (&#39;select * from emp where ename =\&1&#39;);

1 row created.

#;

幾個測試方法:

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

1   row   inserted  

SQL>   select   B   from  A   where   instr(b,&#39;_a&#39;)>0;  
B  
----------  
_a  
select   B   from   A  where   b   like   &#39;%\_a%&#39;  escape   &#39;\&#39;

先啟動轉義符  

set   escape   on  

select   B   from   A  where   b   like   &#39;%\_a%&#39;  escape   &#39;\&#39;;
select   B   from   A  where   b   like   &#39;%\_a%&#39;  escape   &#39;\&#39;;

注意

在Oracle中雙引號」不是轉義字符,因此儲存直接儲存就可以了,不需要轉義了。

oracle轉義符號有:

1,單引號

在ORACLE中單引號有兩個作用: 1)引用字串;2)對自身轉義。

引用字串時,單引號是成對出現的;而對自身的轉義,也必定是雙數的,所以,一個sql語句中,單引號必定是成對的.

Select &#39;abc&#39; a,&#39;&#39; b, &#39;&#39;&#39;&#39; c, &#39; &#39;&#39; &#39; d From Dual;

複雜轉義字串可用連接符||拆分,便於理解。連接符號'||'左右的單引號沒有任何的關係,除非'||'是作為字串的一部分(這在動態SQL中很常見)。

Select &#39;name&#39; || &#39;&#39;&#39;&#39;&#39;&#39; a, &#39;name&#39;&#39;&#39;&#39;&#39; b From Dual;
Output:name&#39;&#39;  name&#39;&#39;

2,雙引號

1)一般來說,字符字串中的雙引號僅僅被當作一個普通字元進行處理。

此時,雙引號不需要成對出現:

Select &#39;hh24"小时""mi""分"""ss"秒"&#39; 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, &#39;Tom&&Jerry&#39; b, &#39;Gun &#39;&#39;N Roses&#39; c From Dual;
Output:&    Tom&Jerry    Gun &#39;N Roses

4, Escape(指定轉義符)

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

#
Select Table_Name From User_Tables Where Table_Name Like &#39;TB=_%=_%&#39; Escape &#39;=&#39;;
Output:TB_STUDENT_SCORE--筛选以TB开头,中间有两个_的表名

推薦教學:《

Oracle影片教學

以上是oracle的轉義字元是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn