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

shilei1發表於2014-02-26
  1. --在ORACLE中,單引號有兩個作用:  
  2. --  1:字串是由單引號引用  
  3. --  2:轉義。  
  4. --單引號的使用是就近配對,即就近原則。而在單引號充當轉義角色時相對不好理解  
  5. --1.從第二個單引號開始被視為轉義符,如果第二個單引號後面還有單引號(哪怕只有一個)。        
  6. SQL> select '''' result from dual;  
  7. RESULT  
  8. ------  
  9. '      
  10. --第二個單引號被作為轉義符,第三個單引號被轉義,可將sql寫成這樣更好理解:  
  11. select ' '' ' from dual;  
  12. output:'  
  13. //  
  14. --2.連線符‘||’導致了新一輪的轉義:  
  15. --  連線符號‘||’左右的單引號沒有任何的關係,  
  16. --  除非‘||’是作為字串的一部分(這在動態SQL中很常見)。  
  17. SQL> select 'name'||'''' result from dual;  
  18. RESULT  
  19. ------  
  20. name'   
  21. --理解:||後面的作為一個字串,即前後是',中間又是一個密集型單引號串'',因此第一個為轉義功能.  
  22. SQL> select 'name''''' result from dual;  
  23. RESULT  
  24. ------  
  25. name''  
  26. --第一個和最後一個單引號作為字串引用符,中間四個單引號兩兩轉義.  
  27. //  
  28. --oracle中使用雙引號:  
  29. --1)一般來說,字串中的雙引號僅僅被當作一個普通字元進行處理。  
  30. --此時,雙引號不需要成對出現:  
  31. SQL> select 'hh24"小時""mi""分"""ss"秒"' results from dual;  
  32. RESULTS  
  33. -------------------------  
  34. hh24"小時""mi""分"""ss"秒"  
  35. //  
  36. --2)當出現在to_char的格式字串中時,雙引號有特殊的作用,  
  37. --就是將非法的格式符包裝起來,避免出現ORA-01821: date format not recognized錯誤。  
  38. --也就是說,去掉雙引號和其包含的字元後,剩下的應該是一個合法的格式串。  
  39. --to_char在處理格式字串時,會忽略雙引號:  
  40. SQL> select to_char(sysdate,'hh24"小時"mi"分"ss"秒"') results from dual;  
  41. RESULTS  
  42. --------------  
  43. 06小時39分51秒  
  44. //  
  45. --格式串為'hh24"小時"mi"分"ss"秒"';  
  46. --去掉雙引號部分後,剩下的是'hh24miss',是一個合法的格式串。  
  47. --不過即使真不知道雙引號的這個用法,也可以這樣來處理,雖然麻煩一點:  
  48. select to_char(sysdate, 'hh24') || '小時' ||  
  49.        to_char(sysdate, 'mi') || '分' ||  
  50.        to_char(sysdate, 'ss') || '秒'  
  51.        AS RESULT   
  52. from dual;  
  53. RESULT  
  54. --------------  
  55. 06小時40分18秒  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/196700/viewspace-1092233/,如需轉載,請註明出處,否則將追究法律責任。

相關文章