搜尋此網誌

2014年10月8日 星期三

[Oracle] PL/SQL 的常用函數

nvl(expr1,expr2) - 檢查null,回傳參數1 or 2
ex: select nvl('a','b') from dual  ==> a
      select nvl(null,'b') from dual  ==> b

to_number(string1) - 轉換文字型態為數字(varchar to number)
ex: select to_number('234') from dual  ==> 234

to_date(string1,[foramt_mark],[nls_language]) - 轉換文字型態為日期格式(varchar to date)
ex: to_date('2009/07/09', 'yyyy/mm/dd') ==> 2009/7/9
      to_date('20090709', 'yyyymmdd') ==> 2009/7/9
      to_date('200907'),'yyyymm') ==> 2009/7/1

last_day(date1) - 日期月份的最後一天
ex: select last_day(sysdate) from dual ==> 月底,系統本月的最後一天
      select last_day(add_months(sysdate,1)) from dual ==> 下個月月底
      select last_day(sysdate)+1 from dual ==> 下個月1號

decode(條件, 條件1, 結果1, [條件2, 結果2]... [, default] ) - 條件等於條件1則傳回結果1,條件2則結果2,類似MSSQL 的 Case When應用。
ex:  select decode('C','a1','a2','b1','b2','c1') from dual ==> c1
       UPDATE UPDDATE= decode(PRICE,InputPRICE,UPDDATE,SYSDATE) ==> 我常用的語法,當輸入價格不同時,才更新Update

cast(column_name as DataType) - 變更欄位資料型態與長度
ex:  select cast('1000' as number) from dual
       select cast('abc' as varchar2(100)) from dual

instr(string1,string2) - 查詢字串位置
ex: select INSTR('aaabbbcdddeee','c') from dual ==> 7

沒有留言:

張貼留言