Oracle常用函數(聚合函數,字符串函數,日期函數,數學函數、數據類型轉換函數)

常用函數

重點學習聚合函數、數學函數、字符串函數、數據類型轉換函數、日期函數等

聚合函數

avg()
count()
max()
min()
sum()
stddev()
stddev_pop()
聚合函數常與select語句的group by子句一起使用。除了count()函數之外,其它聚合函數會忽略null值。聚合函數只能在以下位置作爲表達式使用:select語句的選擇列表(子查詢或外部查詢)、having子句。在select語句中使用聚合函數如下所示:

select 函數名(列名1或*),函數名(列名n)
from 表名
having 函數表達式——[使用聚合函數]

數學函數

數學函數操作數字數字數值,執行數學和算術運算。
**Oracle中的數值型“
abs(n)
acos(n)
asin(n)
atan(n)
ceil(n)
cos(n)
exp(n)
floor(n)
power(n1,n2)
round(n1,n2)

可以在select語句的select和where子句以及表達式中使用數學函數。通過數學函數能夠完成所需的算術運算。
絕對值、取餘、判斷數值正負

select abs(-127),abs(127),abs(’-127‘),abs(-127/5)
from dual;
select mod(22,10),mod(23,0),mod(-127,5),mod('-127',5)
from dual;
select sign(-127),sign(127),sign(0,00),sign('-127'*5)
from dual;

近似值函數、截取、取整函數
近似值函數使用**round(),ceil()函數,floor()函數用於取整
1、返回數字的”四捨五入“值——round()函數

select round(127.1052,3),round(127.1052,2.45)
from dual;

round(127.1052,3)表示將127.1052利用四捨五入精確到小數點後3位,運算結果位127.105;round(127.1052,2.45)表示將第一個參數127.1052四捨五入成第二個參數指定形式的十進制數。
**截取數字——trunc(n1,n2)函數
trunc(n1,n2)函數用於將數值n1根據n2進行截取,其原理非常類似於round()函數,但trunc函數並不進行四捨五入操作,而是直接捨去。

select trunc(127.1062,3),trunc(127.1152,2.45),trunc(127.105,-1),trunc(127.1052)
from dual;

2、截取數字——trunc(n1,n2)函數
trunc(127.1052,3)截取小數127.1052小數點之後3位數字,其值爲127.105.當小數位數爲0或者小數位數被省略時,trunc()函數將截取原數值的整數部分。
3、向上取整——ceil()函數

select order_total,ceil(order_total)
from orders

4、向下取整——floor()函數
向下取整表示返回小於等於數值型參數的最大整數。
平方根、乘方運算函數
1、返回數字的平方根——sqrt()函數

select sqrt(81),sqrt(127)
from dual;

2、乘方運算——power()函數
該參數有兩個參數,第一個參數爲乘方運算的底數,第二個參數爲乘方運算的指數

**格式化數值——to_char()函數
**1、格式字符”0“

select unit_price,to_char(unit_price,'0000.00')
from order_items

2、格式字符”9“
9代表數字位,當原數值中的整數部分沒有數字位與之匹配時,不填充任何字符。

select unit_price,to_char(unit_price,'9999.99')
from order_items

3、格式字符”,“
,是分組符號,常見的應用爲千位分隔符

select unit_price,to_char(unit_price,'999,990.99')
from order_items
order by unit_price desc

4、格式字符”FM“
對於9來說,小數部分沒有對應位時,仍然使用”0“填充,這違背使用習慣,利用FM可以解決這一問題

select unit_price,to_char(unit_price,'FM9999.99')
from order_items

5、格式字符”L“
在to_char()函數中,使用L表示本地化的貨幣標識,美元。

select unit_price,to_char(unit_price,'FML9999.99')
from order_items

6、格式字符”C“
該字符返回與數據庫系統環境相關的貨幣種類符號

7、字符串與數值的比較

select 15 from dual  where '015' = 15;

字符串函數

字符型簡介:
char(n)指定變量或列的數據類型位固定長度的字符串
varchar(n):可變長的字符串
vachar2(n):可變長,在Oracle中儘量使用varchar2(n)
刪除空格
Itrim()函數用於去除字符串前面的所有空格;rtrim()函數用於去除一個字符串尾部的所有空格。trim()函數用於去除1個字符串兩側的所有空格。

select customer_id,cust_first_name,trim(cust_first_name)Lname
from customersnew
order by customer_id

求字符串長度函數
利用length()函數可以得到指定字符串的長度,並返回cunstomersnew表中cust_first_name的長度,以及去掉兩側空格之後的長度

select customer_id,length(cust_first_name),
length(trim((cust_first_name)) Lnane
from customersnew
order by customer_id;

length(")用於獲得空字符串的長度,在Oracle中將字符串視爲null,將nukk作爲參數的函數時,其返回值爲null;

字符轉換函數

在Oracle中,提供了一系列函數用於完成字符與ASCII碼轉換、字符與數值之間的轉換,大小寫字母轉換等工作。
1、ASCII()函數
返回字符表達式中第一個字符的ASCII碼值
2、chr(n)函數
該函數用於求n對應的ASCII字符,其中,n說一個數字
3、lower()函數
將字符串轉換爲小寫
4、upper()函數
把字符串函數轉換爲大寫
5、單詞首字符大寫
initcap()函數
連接字符串
連接字符串可以使用concat()函數,也可以使用”||“

select cust_first_name,cust_last_name,
concat(cust_first_name,cust_last_name)name
from customersnew

檢索字符串、取字符串函數
1、獲得字符串出現的位置——instr()函數
2、截取字符串——substr()函數

select category_name,
substr(category_name,1,3)sub
from categories

3、替換字符串——replace()
replace(c1,c2[,c3])

select category_name,
replace(category_name,'software','軟件’)rep
from categories

4、向左補全字符串——lpad()函數

select category_id,
lpadi(category_id,4,0)la
from categories

5、向右補全字符串——rpad()函數

select category_id,
rpadi(category_id,4,0)la
from categories

日期函數

1、獲取系統日期函數

select sysdate from dual;

2、獲取系統時間函數——systimestamp

select systimestamp from dual;

3、返回會話所在時區當前日期函數——current_date()

select order_date,last-day(order-date)
from orders;

4、返回日期的某個域——extract()函數

select  order_date,extract(hour from order_date)month  from orders;

5、截取日期——trunc()函數

select  order_date,trunct( order_date,'DD')td,trunct( order_date,'MM')tm   from orders;

日期和時間差的轉換

1、返回特定日期所在月的最後一天——last-day()函數
2、月份增加——add_months()函數

select order_date,add-months(order-date,1)
from orders;

3、兩個日期之間的月份——months_between()函數
month_between(日期1,日期2)
4、特定日期之後的一週之內的日期——next_day()函數

select next_day(日期,char)
from dual;

轉換函數

1、類型轉換——cast()函數

select cast(sysdate as varchar2920)) c1
from dual;

2、將數值或日期轉換爲字符串——to_char()函數

select order_date,to_char(order-date,'YYYY-MM-DD') new date
from dual;

3、字符轉數值——to_number()函數

select to_number('11.09,'99.99') new date
from dual;

4、字符轉日期——to_date()函數

select to_date('2007-8-31','YYYY-MM-DD') new date
from dual;

null函數

在Oracle數據庫中,我們常需要對空值進行處理,常用的函數是nvl()函數,該函數可以替換數據中的null值,它具有兩個參數
nvl(exp1,exp2)
該函數兩個參數類型要一致,或者可以隱式轉換,否則報錯

總結

Oracle函數包含聚合函數,數學函數,字符串函數,數據類型函數,日期函數等,需要重點掌握聚合函數,字符串函數和日期函數

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