在Oracle中:
串連符是:||
例如:
SQL> select 'employee_id is '|| employee_id from hr.employees where employee_id=100;
'EMPLOYEE_IDIS'||EMPLOYEE_ID
-------------------------------------------------------
employee_id is 100
雙引號的作用是:假如建立對象的時候,對象名、欄位名加雙引號,則示意 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';這種代表查詢的是字元
運用如下的更新語句不可以:
SQL> update T set name='name='watson' ';
update T set name='name='watson' '
*
ERROR at line 1:
ORA-00933: SQL command not properly ended
而下面語句是可以執行成功的
SQL> update T set name='name=''watson''';
1 row updated.
SQL> select * from T;
NAME AGE
-------------------- ----------
name='watson' 40
原來,兩個'' 示意了一個'
單引號在 Oracle 中有三種身份:
1. 用來引用一個字串常量,也就是界定一個字串的開始和結束
2. 轉義符,對緊隨其後出現的字元(單引號)進行轉義
3. 表示它本身,也就是它作為一個字串的一部分而出現在一個字串常量中當具有不同身份的單引號緊挨著一起出現在 sql 語句中時常常令人迷惑不解,下面我將以自己總結
出來的經驗為基礎,結合具體執行個體來告訴大家如何弄清每個單引號的含義。
總結經驗:
1. 出現在運算式開頭和結尾的這兩個單引號的含義肯定是表示引用一個字串,界定字串的開始和結束。
2. 如果單引號出現在運算式中間(即非運算式開頭和結尾的單引號),且多個單引號之間沒有任何其他字元,那麼當我們從左向右分析時,第一對單引號中的第一個是轉義符,它對緊隨其後的第二個單引號進行轉義,以使第二個單引號作為一個字元出現在一個字串常量中。第二隊,第三隊,以此類推......下面用執行個體來驗證自己的經驗總結:
樣本一:
select '''' from dual;
result '
上例中,運算式 '''' 中第1、4個單引號表示引用一個字串常量,運算式的剩餘部分我們從左往右分析,由於中間是一對單引號,故此對中的第一個是轉義符,其對第二個進行轉義,使第二個表示單引號本身。分析得出這裡有一個字串常量,其中只有一個單引號字元。sql 語句的運行結果與我們的分析結果一致。
樣本二:
SQL> select 'test''''' from dual;
'TEST'
------
test''
上例中,運算式 'test''''' 中第一個和最後一個單引號表示引用一個字串常量,運算式的剩餘部分我們依然從左往右分析。剩餘部分中,遇到的第一個單引號後面緊隨一個單引號,我們將其作為一對,根據樣本一,這一對的解析結果為一個單引號字元本身;然後繼續向右走,又遇到一對緊挨著的單引號,同理,他們的解析結果也是一個單引號字元本身。分析得出這裡的字串常量包含test和兩個單引號字元。sql
語句的運行結果與我們的分析結果一致。