Oracle中有關數學表示式的語法
Oracle中有關數學表示式的語法
三角函式
SIN ASIN SINH
COS ACOS COSH
TAN
- SELECT SIN(3.14159265/6), ASIN(1), SINH(1) FROM DUAL;
- --其它的都類似
ATAN2(x,y) 返回座標為(x,y)點的反正切
-
SELECT
數學函式
ABS(x) 返回x的絕對值
- SELECT ABS(3), ABS(-1) FROM DUAL;
BITAND(x,y) 返回對x,y進行位與(AND)操作的結果
- SELECT BITAND(1,0), BITAND(0,1), BITAND(0,0), BITAND(1,1), BITAND(1100, 1010) FROM DUAL;
CEIL(x) 返回大於或等於x的最小整數(注意負數)
FLOOR(x) 返回小於或等於x的最大整數
- SELECT CEIL(5.6), CEIL(-5.6) FROM DUAL;
- SELECT FLOOR(5.6), FLOOR(-5.6) FROM DUAL;
EXP(x) 返回e的x次冪,其中e約為2.71828183
LN(x) 返回x的自然對數
- SELECT EXP(2), EXP(1), EXP(2.3) FROM DUAL;
- SELECT LN(EXP(2)), LN(2.71828183) FROM DUAL;
LOG(x,y) 返回以x為底y的對數
POWER(x,y) 返回x的y次冪
SQRT(x) 返回x的平方根
- SELECT LOG(10,100), POWER(3,3), SQRT(4) FROM DUAL;
MOD(x,y) 返回x除以y的餘數
- SELECT MOD(2.31, 1.1) FROM DUAL;
SIGN(x) 返回x的符號
- SELECT SIGN(5), SIGN(-5), SIGN(0) FROM DUAL;
ROUND(x[,y]) 返回對x取整的結果。y為可選引數,說明對第幾位小數處取整。沒有指定y的時候
則對x的0位小數取整vkjsy是負數,則對x在小數點的左邊的第|y|位取整。
此函式是四捨五入取整
TRUNC(x[,y]) 與ROUND類似,之不過是直接捨去尾數
- SELECT ROUND(1234.5678), ROUND(1234.5678, 2), ROUND(1234.5678, -2) FROM DUAL;
- 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;