在Oracle中,單引號有兩個作用:
1:字符串是由單引號引用
2:轉(zhuǎn)義。
單引號的使用是就近配對,即就近原則。而在單引號充當(dāng)轉(zhuǎn)義角色時相對不好理解
1.從第二個單引號開始被視為轉(zhuǎn)義符,如果第二個單引號后面還有單引號(哪怕只有一個)。
SQL> select '''' result from dual;
RESULT
------
'
第二個單引號被作為轉(zhuǎn)義符,第三個單引號被轉(zhuǎn)義,可將sql寫成這樣更好理解:
select ' '' ' from dual;
output:'
//
2.連接符‘||’導(dǎo)致了新一輪的轉(zhuǎn)義:
連接符號‘||’左右的單引號沒有任何的關(guān)系,
除非‘||’是作為字符串的一部分(這在動態(tài)SQL中很常見)。
SQL> select 'name'||'''' result from dual;
RESULT
------
name'
理解:||后面的作為一個字符串,即前后是',中間又是一個密集型單引號串'',因此第一個為轉(zhuǎn)義功能.
SQL> select 'name''''' result from dual;
RESULT
------
name''
第一個和最后一個單引號作為字符串引用符,中間四個單引號兩兩轉(zhuǎn)義.
//
Oracle中使用雙引號:
1)一般來說,字符串中的雙引號僅僅被當(dāng)作一個普通字符進行處理。
此時,雙引號不需要成對出現(xiàn):
SQL> select 'hh24"小時""mi""分"""ss"秒"' results from dual;
RESULTS
-------------------------
hh24"小時""mi""分"""ss"秒"
//
2)當(dāng)出現(xiàn)在to_char的格式字符串中時,雙引號有特殊的作用,
就是將非法的格式符包裝起來,避免出現(xiàn)ORA-01821: date format not recognized錯誤。
也就是說,去掉雙引號和其包含的字符后,剩下的應(yīng)該是一個合法的格式串。
to_char在處理格式字符串時,會忽略雙引號:
SQL> select to_char(sysdate,'hh24"小時"mi"分"ss"秒"') results from dual;
RESULTS
--------------
06小時39分51秒
//
格式串為'hh24"小時"mi"分"ss"秒"';
去掉雙引號部分后,剩下的是'hh24miss',是一個合法的格式串。
不過即使真不知道雙引號的這個用法,也可以這樣來處理,雖然麻煩一點:
select to_char(sysdate, 'hh24') || '小時' ||
to_char(sysdate, 'mi') || '分' ||
to_char(sysdate, 'ss') || '秒'
AS RESULT
from dual;
RESULT
--------------
06小時40分18秒
本文出自:億恩科技【www.allwellnessguide.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|