oracle = : := 和變量綁定 oracle通配符和運算符


這篇是7788湊的:
":="是賦值語句 如: l_name :='sky';...
"=" 是判斷是否相等. 如: if 1=1 then...
":" 是變量綁定 如: if :P_NAME ='sky' then...

變量綁定 是指在sql語句的條件中使用變量而不是常量。比如shared pool里有兩條sql語句
select * from tab1 where col1=1;
select * from tab1 where col1=2;
對oracle數據庫來說,這是兩條完全不同的SQL,對這兩條語句都需要進行hard parse。因為oracle會根據sql語句的文本去計算每個字符在內存里的hash值,因此雖然上述兩條SQL只有一個字符不一樣,oracle根據hash算法在內存中得到的hash地址就不一樣,所以oracle就會認為這是兩條完全不同的語句。而如果將上述SQL改寫成select * from tab1 where col1=:var1;,然后通過對變量var1的賦值去查詢,那么oracle對這條語句第一次會進行hard parse,以后就只進行soft parse。假設某條語句被重復執行了幾十萬次,那么使用bind var帶來的好處是巨大的。一個應用程序如果bind var使用不充分,那么幾乎一定會伴隨着嚴重的性能問題。

綁定變量是相對文本變量來講的,所謂文本變量是指在SQL直接書寫查詢條件,這樣的SQL在不同條件下需要反復解析,綁定變量是指使用變量來代替直接書寫條件,查詢bind value在運行時傳遞,然后綁定執行。優點是減少硬解析,降低CPU的爭用,節省shared_pool ;缺點是不能使用histogram,sql優化比較困難

 

 

oracle通配符和運算符

用於where比較條件的有: 
  等於:=、<、<=、>、>=、<> 
  包含:in、not in exists、not exists 
  范圍:between...and、not between....and 
  匹配測試:like、not like 
  Null測試:is null、is not null 
  布爾鏈接:and、or、not 
  www.2cto.com  
通配符: 
  在where子句中,通配符可與like條件一起使用。在 Oracle中: 
  %(百分號): 用來表示任意數量的字符,或者可能根本沒有字符。 
  _(下划線): 表示確切的未知字符。 
  ?(問號): 用來表示確切的未知字符。 
  #(井號): 用來表示確切的阿拉伯數字,0到9。 
  [a-d](方括號):用來表示字符范圍,在這里是從a到d。 
  單引號('):在Oracle中,應該只使用單引號將文本和字符和日期括起來,不能使用引號        (包括單雙引號)將數字括起來。 
 
  雙引號("):在Oracle中,單雙引號含義不同。雙引號被用來將包含特定字符或者空格的列別名括起來。雙引號還被用來將文本放入日期格式。 
 
  撇號('):在Oracle中,撇號也可以寫成彼此相鄰的兩個單引號。為了在供應商名字中間查找所有帶撇號的供應商名字,可以這樣編寫代碼: 
  select * from l_suppliers where supplier_name like '%''%' 
 
  &符號:在Oracle中,&符號常用來指出一個變量。例如,&fox是一個變量,稍微有點不同的一種&& fox。每當&fox出現在Oracle腳本中時,都會要求您為它提供一個值。而使用&&fox,您只需要在& &fox第一次出現時為它提供變量值。如果想將&符號作為普通的符號使用,則應該關閉這個特性。要想關閉這個特性,可以運行以下的命令: set define off ,這是一個SQLplus命令,不是一個SQL命令。SQLplus設置了SQL在Oracle中運行的環境。 
 
  雙豎線(||):Oracle使用雙豎線表示字符串連接函數。 
 
  星號(*):select *意味着選擇所有的列,count(*)意味着計算所有的行,表示通配符時,表示0個或任意多個字符。 
 
  正斜杠(/):在Oracle中,用來終止SQL語句。更准確的說,是表示了“運行現在位於緩沖區的SQL代碼”。正斜杠也用作分隔項。 
 
  不等於:有多種表達方式:!=、^=、<>、not xxx=yyy、not(xxx=yyy)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM