oralce裡面的單引號轉義

2022-04-09 09:58:13 字數 1611 閱讀 9738

oralce裡面的單引號轉義

在oracle中,字串是由單引號引用的,而轉義也是由單引號來完成的,這對於許多初學者而言是件頭疼的事情,尤其是開始學習動態sql的人。如果就單純的單引號而言,很容易讓人理解:它總是找與它最近的乙個單引號配對。也就是所謂的就近原則;但是在單引號充當轉義角色的時候,情況就顯得有些讓人費解了。(為方便起見,紅色單引號都是充當轉義角色) 

1、從第二個單引號開始被視為轉義符,如果第二個單引號後面還有單引號(哪怕只有乙個)。 

sql> select '''' from dual; 

''''

--   www.2cto.com  

' 為了證實結果是被第二個單引號轉義的第三個單引號(既:select '''' from dual;),我們做如下兩個測試: 

sql> select ''' from dual; 

error: 

ora-01756: 引號內的字串沒有正確結束 

相信大家對這樣的錯誤不陌生吧 

sql> select 'sdlf from dual; 

error: 

ora-01756: 引號內的字串沒有正確結束 

也就是說,當第二個單引號充當轉義角色,第三個單引號被轉義。

那麼 select '' ' from dual; 自然就缺少與第乙個單引號匹配的單引號了,出現了孤立的單引號 

下面的兩個實驗就更加支援了上面的結論。 

sql> select ' '' ' from dual; 

'''' 

------ 

'   www.2cto.com  

sql> select '' '' from dual; 

select '' '' from dual 

* error 位於第 1 行: 

ora-00923: 未找到預期 from 關鍵字 

對於第乙個:select ' '' ' from dual; 

對於第二個:不存在轉義。 

上面的這兩個實驗其實也是單引號轉義與非轉義的乙個性質:轉義是密集的,也就是說,如果單引號出現在轉義的位置上,而該單引號後面緊跟(緊跟的定義為:兩個單引號之間是零距離的)的不是單引號,這個時候單引號就不在充當轉義的角色,而是與它前面的配對。 

2、連線符『||』導致了新一輪的轉義:連線符號『||』左右的單引號沒有任何的關係,除非『||』是作為字串的一部分(這在動態sql中很常見)。 

sql> select 'exit'||'''' from dual; 

'exit'||'' 

---------- 

exit' 

www.2cto.com  

sql> select 'exit''''' from dual; 

'exit''''' 

------------ 

exit'' 

對於第乙個,前兩個單引號配對,後面四個單引號按照上面的第一條原則分配,既:select 'exit'||'''' from dual; 

對於第二個,由於第二個單引號後面存在單引號,所以就不與第乙個配對,而是充當了轉義的角色。既:select 'exit''''' from dual; 

有了上面的兩條原則,我們就可以從容的面對複雜的動態sql了

oralce裡面的單引號轉義

在oracle中,字串是由單引號引用的,而轉義也是由單引號來完成的,這對於許多初學者而言是件頭疼的事情,尤其是開始學習動態sql的人。如果就單純的單引號而言,很容易讓人理解 它總是找與它最近的乙個單引號配對。也就是所謂的就近原則 但是在單引號充當轉義角色的時候,情況就顯得有些讓人費解了。為方便起見,...

oracle單引號轉義字元

create or replace procedure p employee hire authid current user isvn ctn number 2 stmt sql varchar2 500 begin select count into vn ctn from user all t...

SQL 轉義字元 單引號

c 的轉義字元是 sql 的轉義字元是 單引號 例 select from tbl where uyear 06 請注意其中紅色背景的單引號,它即表示轉義字元,如果我們省略,則整個語句會出錯,轉義字元不會輸出,上例中 uyear 的實際條件值為 06,而不是 06 為什麼不能省略呢,假如我們省略,上...