天天看點

oracle 中使用單引号(')和雙引号(")

--在ORACLE中,單引号有兩個作用:
--  1:字元串是由單引号引用
--  2:轉義。
--單引号的使用是就近配對,即就近原則。而在單引号充當轉義角色時相對不好了解
--1.從第二個單引号開始被視為轉義符,如果第二個單引号後面還有單引号(哪怕隻有一個)。      
SQL> select '''' result from dual;
RESULT
------
'    
--第二個單引号被作為轉義符,第三個單引号被轉義,可将sql寫成這樣更好了解:
select ' '' ' from dual;
output:'
//
--2.連接配接符‘||’導緻了新一輪的轉義:
--  連接配接符号‘||’左右的單引号沒有任何的關系,
--  除非‘||’是作為字元串的一部分(這在動态SQL中很常見)。
SQL> select 'name'||'''' result from dual;
RESULT
------
name' 
--了解:||後面的作為一個字元串,即前後是',中間又是一個密集型單引号串'',是以第一個為轉義功能.
SQL> select 'name''''' result from dual;
RESULT
------
name''
--第一個和最後一個單引号作為字元串引用符,中間四個單引号兩兩轉義.
//
--oracle中使用雙引号:
--1)一般來說,字元串中的雙引号僅僅被當作一個普通字元進行處理。
--此時,雙引号不需要成對出現:
SQL> select 'hh24"小時""mi""分"""ss"秒"' results from dual;
RESULTS
-------------------------
hh24"小時""mi""分"""ss"秒"
//
--2)當出現在to_char的格式字元串中時,雙引号有特殊的作用,
--就是将非法的格式符包裝起來,避免出現ORA-01821: date format not recognized錯誤。
--也就是說,去掉雙引号和其包含的字元後,剩下的應該是一個合法的格式串。
--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秒
           

原帖:http://topic.csdn.net/u/20110419/22/08eccf49-ec75-4372-97c8-6bd3ed3d2b68.html?74862

參考:

[1]http://hi.baidu.com/156544632/blog/item/de6f89001d70641c738b65f6.html

[2]http://davidyu720.itpub.net/post/31716/388693