天天看點

oracle易忘函數用法(1)

一般的to_char是這樣用的to_char(sysdate,'YYYY-MM-DD hh:mi:ss AM') ,也有幾個突出點的用法:

to_char(sysdate, 'dd') 檢視今天是幾号to_char(sysdate, 'ww') 檢視這是這個月第幾個星期

to_char(sysdate, 'mm')  檢視這是一年中第幾個月

to_char(sysdate, 'yyyy') 檢視年份

last_day(to_date('2007-02-01','YYYY-MM-DD'))檢視一個月的最後一 天,add_months(sysdate,10)檢視若幹個月後的今天,next_day(sysdate,'星期五')給個日期檢視後面的最近的星期 幾的日期,不過這個星期五要是換成英文居然有問題,第2個參數可以是數字1-7,分别表示周日到周六。

下面貼個全的,需要的時候順便查一下。

一、PL/SQL單行函數群組函數詳解

函數是一種有零個或多個參數并且有一個傳回值的程式。在SQL中Oracle内建了一系列函數,這些函數都可被稱為SQL或PL/SQL語句,函數主要分為兩大類:單行函數群組函數。

本文将讨論如何利用單行函數以及使用規則。

1、SQL中的單行函數

SQL和PL/SQL中自帶很多類型的函數,有字元、數字、日期、轉換、和混合型等多種函數用于處理單行資料,是以這些都可被統稱為單行函數。這些 函數均可用于SELECT,WHERE、ORDER BY等子句中,例如下面的例子中就包含了TO_CHAR,UPPER,SOUNDEX等單行函數。

<col>

SELECT ename,TO_CHAR(hiredate,'day,DD-Mon-YYYY')FROM

empWhere UPPER(ename) Like 'AL%'ORDER BY SOUNDEX(ename)

單行函數也可以在其他語句中使用,如update的SET子句,INSERT的VALUES子句,DELET的WHERE子句,認證考試特别注意在SELECT語句中使用這些函數,是以我們的注意力也集中在SELECT語句中。

2、NULL和單行函數

在如何了解NULL上開始是很困難的,就算是一個很有經驗的人依然對此感到困惑。NULL值表示一個未知資料或者一個空值,算術操作符的任何一個操 作數為NULL值,結果均為提個NULL值,這個規則也适合很多函數,隻有CONCAT,DECODE,DUMP,NVL,REPLACE在調用了 NULL參數時能夠傳回非NULL值。在這些中NVL函數時最重要的,因為他能直接處理NULL值,NVL有兩個參數:NVL(x1,x2),x1和x2 都式表達式,當x1為null時傳回X2,否則傳回x1。

下面我們看看emp資料表它包含了薪水、獎金兩項,需要計算總的補償。

column name emp_id salary bonuskey type pk nulls/unique nn,

u nnfk table datatype number number numberlength 11.2 11.2

不是簡單的将薪水和獎金加起來就可以了,如果某一行是null值那麼結果就将是null,比如下面的例子:

update empset salary=(salary+bonus)*1.1

這個語句中,雇員的工資和獎金都将更新為一個新的值,但是如果沒有獎金,即 salary + null,那麼就會得出錯誤的結論,這個時候就要使用nvl函數來排除null值的影響。

是以正确的語句是:

update empset salary=(salary+nvl(bonus,0)*1.1

3、單行字元串函數

單行字元串函數用于操作字元串資料,他們大多數有一個或多個參數,其中絕大多數傳回字元串。

ASCII()

c1是一字元串,傳回c1第一個字母的ASCII碼,他的逆函數是CHR()

SELECT ASCII('A') BIG_A,ASCII('z') BIG_z FROM empBIG_A BIG_z65 122

CHR()[NCHAR_CS]

i是一個數字,函數傳回十進制表示的字元。

select CHR(65),CHR(122),CHR(223) FROM empCHR65 CHR122 CHR223A z B

CONCAT(,)

c1,c2均為字元串,函數将c2連接配接到c1的後面,如果c1為null,将傳回c2.如果c2為null,則傳回c1,如果c1、c2都為null,則傳回null。他和操作符||傳回的結果相同

select concat('slobo ','Svoboda') username from dualusernameslobo Syoboda