1. 程式人生 > 其它 >oracle轉義符

oracle轉義符

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

一、單引號

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

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

Select 'abc' a,'' b, '''' c, ' '' ' d From Dual;

結果:

其中A為字串,B為空字串,C為單個引號(字串),D為:空格單個引號空格(字串)

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

Select 'name' || '''''' a, 'name''''' b From Dual;

結果如下:

select 'update sys_areas set LONGITUDE=''' || LONGITUDE || ''', LATITUDE=''' || LATITUDE || ''' where id =' || ID || ';' from sys_areas;

其中,上述sql中,紅色的引號為轉義符。

結果如下:

二、雙引號

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

Select 'hh24"小時""mi""分"""ss"秒"' Results From Dual;

結果如下:

2、當出現在to_char的格式字串中時,雙引號有特殊的作用,就是將非法的格式符包裝起來,避免出現ORA-01821: date format not recognized錯誤。

也就是說,去掉雙引號和其包含的字元後,剩下的應該是一個合法的格式串。

to_char在處理格式字串時,會忽略雙引號

Select To_Char(Sysdate, 'hh24"小時"mi"分"ss"秒"') As "當前時間/時分秒" From Dual;

結果:

格式串為'hh24"小時"mi"分"ss"秒"';去掉雙引號部分後,剩下的是'hh24miss',是一個合法的格式串。

不過即使真不知道雙引號的這個用法,也可以這樣來處理,雖然麻煩一點

Select To_Char(Sysdate, 'hh24') || '小時' || To_Char(Sysdate, 'mi') || '' || To_Char(Sysdate, 'ss') || '' As Result From Dual;

三、&(and符號)

用來識別/設定自定義變數,後需跟變數名;

如需作為字元使用,需使用Chr(38);

Select Chr(38) a, 'Tom&&Jerry' b, 'Gun ''N Roses' c From Dual;

結果:

四、Escape(指定轉義符)

指定一個非特殊符號為轉義符,多用在萬用字元轉義。

Select Table_Name From User_Tables Where Table_Name Like 'B=_%=_%' Escape '=';

結果:以B開頭,至少有兩個下劃線。