oracle中單引號的應用

在Oracle中:

  雙引號的作用是:假如建立對象的時候,對象名、字段名加雙引號,則示意Oracle將嚴格區分大小寫,否則Oracl都默認大寫。

  而單引號則示意:這個加了單引號的字段是一個字類似字符串,並不區分大小寫。

單引號用於標識字符與數字的區別

  當指定字符串文本時,必須用單引號將字符串文本引住。

  Oracle10g之前,假如字符串文本里含有單引號,那麼必須運用兩個單引號示意。例如:I'm a String!

  字符串文本則爲:string_var:='I''m a String!'

  在oracle10g中可以運用其它分隔符(<>,[],{}等),留心,運用這些分隔符時,不僅要在分隔符前後加單引號,還要帶有前綴q.例:string_var:=q'[I''m a String!]';

  例如

  select * from table_name where id=1;這種代表查詢的是數字

  select * from table_name where id='1';這種代表查詢的是字符

  假如是雙引號是這樣,假如你有個表的字段叫sysdate,因爲sysdate屬於oracle中的特有字符,但你要查詢這個字段的時候

  select "sysdate" from table_name;

  但是你要是用

  select 'sysdate' from table_name;

  那麼你查出來的就是字符串,結果是sysdate

  運用如下的更新語句不可以:update device set dept='select * from message where name='tom' ' ;

  處理要領:

  update device set dept='select * from message where name=' 'tom' ' where id=3' ;

  執行成功。

  原來,兩個'' 示意了一個'

單引號在 Oracle 中有三種身份:

      1. 用來引用一個字符串常量,也就是界定一個字符串的開始和結束
      2. 轉義符,對緊隨其後出現的字符(單引號)進行轉義
     3. 表示它本身,也就是它作爲一個字符串的一部分而出現在一個字符串常量中

當具有不同身份的單引號緊挨着一起出現在 sql 語句中時常常令人迷惑不解,下面我將以自己總結出來的經驗爲基礎,結合具體實例來告訴大家如何弄清每個單引號的含義。

總結經驗:
1. 出現在表達式開頭和結尾的這兩個單引號的含義肯定是表示引用一個字符串,界定字符串的開始和結束
2. 如果單引號出現在表達式中間(即非表達式開頭和結尾的單引號),且多個單引號之間沒有任何其他字符,那麼當我們從左向右分析時,第一對單引號中的第一個是轉義符,它對緊隨其後的第二個單引號進行轉義,以使第二個單引號作爲一個字符出現在一個字符串常量中。第二隊,第三隊,以此類推......

下面用實例來驗證自己的經驗總結:

示例一:

select '''' from dual;

result '

上圖中,表達式 '''' 中第1、4個單引號表示引用一個字符串常量,表達式的剩餘部分我們從左往右分析,由於中間是一對單引號,故此對中的第一個是轉義符,其對第二個進行轉義,使第二個表示單引號本身。分析得出這裏有一個字符串常量,其中只有一個單引號字符。sql 語句的運行結果與我們的分析結果一致。

示例二:

select 'exit''''' from dual

result exit''

上圖中,表達式 'exit''''' 中第一個和最後一個單引號表示引用一個字符串常量,表達式的剩餘部分我們依然從左往右分析。剩餘部分中,遇到的第一個單引號後面緊隨一個單引號,我們將其作爲一對,根據示例一,這一對的解析結果爲一個單引號字符本身;然後繼續向右走,又遇到一對緊挨着的單引號,同理,他們的解析結果也是一個單引號字符本身。分析得出這裏的字符串常量包含exit和兩個單引號字符。sql 語句的運行結果與我們的分析結果一致。

 

原文地址:http://www.cnblogs.com/gsk99/archive/2011/04/19/2021267.html

發佈了54 篇原創文章 · 獲贊 10 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章