Oracle中的單引號和雙引號
一、雙引號的作用:關鍵字、對象名、字段名、別名加雙引號,則示意 Oracle將嚴格區分大小寫,否則Oracl都默認大寫。
1.雙引號引住關鍵字
select “sysdate” from dual;等同於select sysdate from dual;
如下則不會輸出時間,只會輸出sysdate這個字符串。
select ‘sysdate’ from dual;
2.雙引號引住字段名
select * from emp where “ENAME” = scott;
因為雙引號提示oracle嚴格區分大小寫,如下則不行
select * from emp where “ename” = scott;
3.別名可以不用任何引號,但是比較特殊的別名必須用雙引號,例如“a b”中間有特殊字符的;
二、單引號在 Oracle 中有三種身份:
1.引用一個字符串常量,也就是界定一個字符串的開始和結束。
select * from table_name where id=1123; ----這種代表查詢的是數字
select * from table_name where id=’1123’; ----這種代表查詢的是字符
2. 轉義符,對緊隨其后出現的字符(單引號)進行轉義
declare
id varchar2(20);
begin
select * from table_name where like ”’%’||id||’%”’
end;
3. 表示它本身,也就是它作為一個字符串的一部分而出現在一個字符串常量中,這點與2密不可分。
select ”” from dual;
分析:表達式 ”” 中第1、4個單引號表示引用一個字符串常量,表達式的剩余部分我們從左往右分析,由於中
間是一對單引號,故此對中的第一個是轉義符,其對第二個進行轉義,使第二個表示單引號本身。結果是只有一個
單引號字符。sql 語句的運行結果與我們的分析結果一致。
例 :
declare
c_sql varchar2(200);
name varchar2(10);
begin
c_sql := ‘select ID from swj where DWID like ’ || ”””||’ and’|| ’ SWJMC’ ||’ like ‘||””||name||”” ;
end;
分析:這個例子比較復雜,但是原理還是一樣的。這里用到了連接符||,所以要每個||獨自分析,
‘select ID from swj where DWID like ‘很簡單,就是一個字符串。”””先剝離最外層的一對”,剩下的就是
””,然后一對”表示一個’,前面對后面進行轉義,這里就是”。后面的類似分析,最后的””就表示一個’。
所以最后的語句就是: select ID from swj where DWID like ” and SWJMC like ‘name’;
單引號用法總結:
1. 出現在表達式開頭和結尾的這兩個單引號的含義肯定是表示引用一個字符串,界定字符串的開始和結束.
2. 如果單引號出現在表達式中間(即非表達式開頭和結尾的單引號),且多個單引號之間沒有任何其他字符,
那么當我們從左向右分析時,每一對單引號表示一個單引號字符。其中第一個是轉義符,它對緊隨其后的第
二個單引號進行轉義,以使第二個單引號作為一個字符出現在一個字符串常量中。