Oracle筆記之單行函數(一)


Oracle筆記之單行函數(一)

字符函數

--首字母大寫,小寫,大寫

select initcap(rowid)from otest

select lower(rowid)from otest

select upper(rowid)from otest

--合併列 concat(a,b)

select orderno || job || tid from otest

select concat(orderno,job)from otest

select concat('hello ','world')合併from dual

--字符串截取

--從第2位開始取,到結尾

select substr(orderno,2)from otestwhere orderno =888

--從第3位開始取,取5

select substr('hello world',3,5)from dual

--instr(a,b),返回字符所在位置,不存在返回0

select instr(orderno,2)位置from otest

--字符長度,字節長度

select length(orderno)字符長度from otest--3

select length(job)字符長度from otest  --2

select lengthb(orderno)字節長度from otest--3

select lengthb(job)字節長度from otest--6

select length('北京'),lengthb('北京')from dual--2 6

--lpad左填充rpad右填充(字符,位數,不足位補齊字符)

select lpad('abc',5,'*')left,rpad('abc',5,'+')right from dual

--trim去掉前後指定字符--注意trim關鍵詞from

select trim('h' from 'hello olleh')from dual

--replace(操作物,替換誰,替換爲) --替換字符函數

select replace('hello olleh','l','x')from dual

數字函數

--四捨五入  round(小數,保留位數)

select round(45.625,2)one,round(45.625,1)two,

round(45.625,0) three,round(45.625,-1),round(45.625,-2)from dual

--截斷trunc(小數,保留截斷位數)

select trunc(45.625,2)one,trunc(45.625,1)two,

trunc(45.625,0) three,trunc(45.625,-1),trunc(45.625,-2)from dual

 

--求餘mod(除數,被除數)

select mod(1600,300)餘數from dual

日期格式和函數

--當前日期sysdate

select sysdate from dual

--利用to_char的日期轉換

  /*日期格式:

   格式       表示          例如

   YYYY      數字年         2017

   YEAR      英文年    twenty seventeen

   MM        二位月          05

   MONTH     全稱月         4

   DD        二位日          02

   DY/DAY     星期         星期一

   HH12/24   小時制         12/24

   MI         分鐘          0-59

   SS          秒           0-59

   */

select to_char(sysdate,'yyyy-mm-dd dy hh24:mi:ss')時間日期from dual

--日期不能加日期沒有意義,但可以減日期。日期可以加減數字表示前後天數

select (sysdate+sysdate)time from dual--報錯:Date cannot be dated

select (sysdate-sysdate)time from dual

select (sysdate-1)昨天,(sysdate+1)明天from dual

--日期差months_between(a,b)

select months_between(sysdate,(sysdate-31))相差from dual

--指定日期加月數add_months(a,b)

select add_months(sysdate,5)from dual

--指定日期的下個日期next_day

  /*next_day可應用於自動備份數據;異地容災

    1.分佈式數據庫 同步、更新、備份

    2.快照 觸發器的運用*/

select next_day(sysdate,'星期一')from dual

--本月最後一天last_day

select last_day(sysdate)from dual

--日期的四捨五入round(a,b)

--日期的截斷trunc(a,b)和數字的用法相同,以日期一半劃分

 

 

轉換函數

--日期格式中有字符串要用雙引號括起來

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss "今天是"day')from dual

--貨幣的表示,數字格式轉換

  /*數字格式

    表示        含義

     9          數字

     0           

     $          美元

     L        本地貨幣

     .         小數點

             千位符

     */

--查詢薪水 要求保留兩位,千位符,貨幣代碼表示

select to_char(orderno,'L9,999.99')from otest

--字符轉數字to_number(字符,數字格式)

select to_number('123','999')from dual

--字符轉日期to_date(字符,日期格式)

select to_date('2017-05-21','yyyy-mm-dd')from dual

--查看默認格式語句

select *from V$nls_Parameters

--默認日期格式爲:DD-MON-RR

--修改默認日期格式

alter session set NLS_DATE_FORMAT = 'yyyy-mm-dd'

 

 

通用函數

--nvl(a,b)anull返回b

--nvl(a,b,c)anull返回c,否則返回b

--nullif(a,b)a=b時,返回null,否則返回a

--coalesce(a,b,...,n)從左到右找到第一個不爲null的值

 

 

條件表達式函數

--條件表達式

  /*SQL語句中使用IF-THEN-ELSE邏輯

   兩種方法:

    CASE表達式:SQL99語法,類似於Basic,比較繁瑣

    DECODE函數:Oracle自己的語法,類似Java,比較簡潔

    */

--CASE語句

CASE exprWHEN comparison_expr1THEN return_expr1

          WHEN comparison_expr2THEN return_expr2

          WHEN comparison_exprnTHEN return_exprn

          ELSE else_expr

END

--DECODE函數

DECODE(expr,comparison_expr1,return_expr1,

            comparison_expr2,return_expr2,

            comparison_exprn,return_exprn,

            else_expr)



  全文根據數據庫實際編寫摘錄,需讀者掌握基本建表。感謝您的支持與收藏,謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章