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