1. 程式人生 > >Oracle中有關數學表示式的語法

Oracle中有關數學表示式的語法

Oracle中有關數學表示式的語法

三角函式

SIN               ASIN              SINH
COS             ACOS           COSH
TAN             

 ATAN             TANH

  1. SELECT SIN(3.14159265/6), ASIN(1), SINH(1) FROM DUAL;  
  2. --其它的都類似 

 

ATAN2(x,y)      返回座標為(x,y)點的反正切

  1. SELECT
     ATAN2(3,3) FROM DUAL;  

 

 

數學函式

ABS(x)          返回x的絕對值

  1. SELECT ABS(3), ABS(-1) FROM DUAL;  

 

BITAND(x,y)     返回對x,y進行位與(AND)操作的結果

  1. SELECT BITAND(1,0), BITAND(0,1), BITAND(0,0), BITAND(1,1), BITAND(1100, 1010) FROM DUAL;  

CEIL(x)         返回大於或等於x的最小整數(注意負數)

FLOOR(x)        返回小於或等於x的最大整數

  1. SELECT CEIL(5.6), CEIL(-5.6) FROM DUAL;  
  2. SELECT FLOOR(5.6), FLOOR(-5.6) FROM DUAL;  

EXP(x)          返回ex次冪,其中e約為2.71828183
LN(x)          
返回x的自然對數

  1. SELECT EXP(2), EXP(1), EXP(2.3) FROM DUAL;  
  2. SELECT LN(EXP(2)), LN(2.71828183) FROM DUAL;  

LOG(x,y)        返回以x為底y的對數
POWER(x,y)     
返回xy次冪
SQRT(x)        
返回x的平方根

  1. SELECT LOG(10,100), POWER(3,3), SQRT(4) FROM DUAL;  

MOD(x,y)        返回x除以y的餘數

  1. SELECT MOD(2.31, 1.1) FROM DUAL;  

SIGN(x)         返回x的符號

  1. SELECT SIGN(5), SIGN(-5), SIGN(0) FROM DUAL;  

ROUND(x[,y])    返回對x取整的結果。y為可選引數,說明對第幾位小數處取整。沒有指定y的時候
               
則對x0位小數取整vkjsy是負數,則對x在小數點的左邊的第|y|位取整。
               
此函式是四捨五入取整
TRUNC(x[,y])   
ROUND類似,之不過是直接捨去尾數

 

  1. SELECT ROUND(1234.5678), ROUND(1234.5678, 2), ROUND(1234.5678, -2) FROM DUAL;  
  2. SELECT TRUNC(1234.5678), TRUNC(1234.5678, 2), TRUNC(1234.5678, -2) FROM DUAL;  

 

 

聚合函式

所謂聚合函式是指標對多條記錄的函式。Oracle最常用的聚合函式包括,max()min()avg()sum()count()函式。本節將講述這些函式的用法。

 

max()函式——求最大值

max()函式用於獲得記錄集在某列的最大值。例如,為了返回員工最高工資,可以利用max()函式。

select max(salary) max_salary from t_salary;

 

min()函式——求最小值

min()函式可以用來獲得記錄集在某列上的最小值,其功能與max()函式相反。

select distinct e.employee_name, s.salary

from t_employees e, t_salary s

where e.employee_id = s.employee_id and s.salary = (select min(salary) from t_salary)

 

avg()函式——求平均值

avg()函式用於獲得記錄集在某列上的平均值。

select e.employee_name, avg(salary)

from t_employees e, t_salary s

where e.employee_id = s.employee_id

group by e.employee_id, e.employee_name

 

sum()函式——求和

sum()函式用於獲得結果集上某列值的和。

select e.employee_name, sum(salary)

from t_employees e, t_salary s

where e.employee_id = s.employee_id

group by e.employee_id, e.employee_name

 

count()函式——獲得記錄數

ount()函式的作用物件同樣為記錄集。與其他聚合函式不同的是,count()函式可以有三種方式來進行計數:

count(*)——計算行數

count(column)——計算某列

count(1)——般情況下select count(*)  count(1) 執行的結果是一樣的,都包括了對null的統計.

insert into t_employees values (16, null, null,null);

select count(*) from t_employees;

select count(employee_id) from t_employees;

select count(employee_name) from t_employees;

select count(1) from t_employees;

一般來說,利用count(1)進行計數的速度最快,但是特別注意的是,預期的結果是針對整行資料,還是某列的資料

 

運算表示式

Oracle中常用的運算包括:數學運算,邏輯運算和按位運算。本節將通過範例著重講述這三種運算的常用運算子和運算規則。

 

數學運算

數學運算是最常用的運算方式,Oracle中的數學運算子包括:+-*/,分別代表了加、減、乘除運算。在使用數學運算時,Oracle會自動將其他資料型別轉換為數值型,然後再參與運算。

select 5+3 result from dual;

select 5-3 result from dual;

select 5*2 result from dual;

select 5/2 result from dual;

需要注意的是,任何一種運算子與null的運算結果均為null

select 5+null result from dual;

select 5-null result from dual;

select 5*null result from dual;

select 5/null result from dual;

 

邏輯運算

Oracle中的邏輯運算包括:

>:大於運算,可用於數值型、日期型和字串型別;

>=:大於等於運算,可用於數值型、日期型和字串型別;

<:小於運算,可用於數值型、日期型和字串型別;

<=:大於等於運算,可用於數值型、日期型和字串型別;

=:等於,可用於數值型、日期型和字串型別;

<>:不等於,可用於數值型、日期型和字串型別;

!=:與<>用法相同;

NOT:取反操作;

AND:布林值的與操作;

OR:布林值的或操作。

 

需要注意的是,Oracle中的邏輯運算子只能作為條件判斷,並不返回值。為了查詢工資在5000-7000之間的記錄,可以利用邏輯運算子來組合查詢條件。

select * from t_salary where salary>=5000 and salary<=7000;

對於null值,需要特別注意的是,無論使用哪種運算子,結果都會返回null。當比較的結果為null,並作為條件出現時,Oracle都會將其解釋為false

select 1 result from dual where 1=null;

select 1 result from dual where 1<>null;

select 1 result from dual where null=null;

select 1 result from dual where null<>null;

 

位運算

Oracle8i開始,系統已經提供了位運算子。最常用的莫過於bitand運算子。

select bitand(192, 100) result from dual;