ORACLE常用結構和函式使用方法總結

OraFige發表於2011-12-20
Normal 0 false false false EN-US ZH-CN X-NONEIT168技術】在學習oracle的過程中,遇到一些常用的函式或結構,下面做一個簡單的總結。

  With用法:

   The WITH query_name clause lets you assign a name to a subquery block. You can then reference the subquery block multiple places in the query by specifying the query name. Oracle optimizes the query by treating the query name as either an inline view or as a temporary table.

WITH <alias_one> AS
  (subquery_sql_statement),
     <alias_two> AS
  (sql_statement_from_alias_one)
SELECT <column_name_list>
FROM <alias_one>, <alias_two>
WHERE <join_condition>;

  例子:

with

  sql1 as (select to_char(a) s_name from test_tempa),

  sql2 as (select to_char(b) s_name from test_tempb where not exists ( select s_name from sql1 where rownum=1))

  select * from sql1

  union all  select * from sql2

   Decode用法:

  Decode函式與一系列巢狀的 IF-THEN-ELSE語句相似。base_expcompare1,compare2等等依次進行比較。如果base_exp i compare項匹配,就返回第i 個對應的value 。如果base_exp與任何的compare值都不匹配,則返回default;

decode(條件,1,返回值1,2,返回值2,...n,返回值n,預設值

   例子:

SELECT   DECODE(Status,0,'未預定'1,'已預定',2,'已入庫')  AS status

FROM   Stocks  

  // :

  當Status=0,"未預定"賦值

  當Status=1,"已預定"賦值

  當 Status=2,"已入庫"賦值

  NVL()函式:

  NVL(ARG,VALUE)達標如果前面的ARG值為 NULL那麼返回的值為後面的VALUE

NVL(eExpression1, eExpression2)

    eExpression1 eExpression2 可以是任意一種資料型別;

  DECODENVL結合使用:

DECODE(NVL(ChangeNum,''),'','-',ChangeNum)  

  //分析:

  首先判斷ChangeNum是否 為空.若為空賦空值[NVL函式]

  其次,判斷取出的欄位是否為空,如果是則賦'-'

  最後的預設處理是 ChangeNum

  LPADRPAD的用法:

lpad( string1, padded_length, [ pad_string ] )

  其中string1是需要貼上字元 的字串

  padded_length 是返回的字串的數量,如果這個數量比原字串的長度要短,lpad函式將會把字串擷取成padded_length;pad_string是個可選參 數,如果這個引數未寫,lpad函式將會在string1的左邊貼上空格。

select lpad('tech',2) from dual

返回值:t

eselect lpad('tech', 8, '0') from dual

返回值:0000tech

  TRUNC用法:

TRUNC(for dates)

    TRUNC函式為指定元素而截去的日期值。

  其具體的語法格式:TRUNC(date[,fmt])

  date 一個日期值

  fmt 日期格式,該日期將由指定的元素格式所截去。忽略它則由最近的日期截去

TRUNCTO_DATE(’24-Nov-1999 08:00 pm’,’dd-mon-yyyy hh:mi am’)      

=24-Nov-1999 12:00:00 am’  

TRUNCTO_DATE(’24-Nov-1999 08:37 pm’,’dd-mon-yyyy hh:mi am’,’hh’)   

 =24-Nov-1999 08:00:00 am’  

   另一種用法

TRUNC(for number)

   TRUNC函式返回處理後的數值,其工作機制與ROUND函式極為類似,只是該函 數不對指定小數前或後的部分做相應舍入選擇處理,而統統截去。

  其具體的語法格式:TRUNC(number[,decimals])

   number 待做擷取處理的數值

  decimals 指明需保留小數點後面的位數。可選項,忽略它則截去所有的小數部分

TRUNC89.9852=89.98

TRUNC89.985=89

TRUNC89.985-1=80

      注: 第二個引數可以為負數,表示為小數點左邊指定位數後面的部分截去,即均以0.

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

相關文章