oracle函数

来源:互联网 发布:录音乐的软件 编辑:程序博客网 时间:2024/06/14 17:58

CASE表达式可以在SQL中实现if-then-else型的逻辑,而不必使用PL/SQL.CASE的工作方式与DECODE()类似,但应该使用CASE,因为它与ANSI兼容.

SASE有两种表达式:

1. 简单CASE表达式,使用表达式确定返回值.

语法:

CASE search_expression
WHEN expression1 THEN result1
WHEN expression2 THEN result2
...
WHEN expressionN THEN resultN
ELSE default_result
END

例:

select product_id,product_type_id,
case product_type_id
when 1 then 'Book'
when 2 then 'Video'
when 3 then 'DVD'
when 4 then 'CD'
else 'Magazine'
end
from products

比较大小函数SIGN

sign(x)或者Sign(x)叫做符号函数,其功能是取某个数的符号(正或负):

当x>0,sign(x)=1;

当x=0,sign(x)=0;

当x<0, sign(x)=-1;

x可以是函数或计算表达式

 

流程控制函数DECODE

在逻辑编程中,经常用到If – Then –Else 进行逻辑判断。在DECODE的语法中,实际上就是这样的逻辑处理过程。它的语法如下:

DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )

Value 代表某个表的任何类型的任意列或一个通过计算所得的任何结果。当每个value值被测试,如果value的值为if1,Decode 函数的结果是then1;如果value等于if2,Decode函数结果是then2;等等。事实上,可以给出多个if/then 配对。如果value结果不等于给出的任何配对时,Decode 结果就返回else 。 这里的if、then及else 都可以是函数或计算表达式。

平均值:AVG

求和:sum

计算最大值:max

计算最小值:min

行计数:count

例子:select avg(sal)”平均工资” from emp

去除重复:distinct

例:select count(distinct jod) from emp;

分组查询 group by

例:select job,avg(sal)”平均成绩“

From emp

Group by job

连接运算符:”||”

Select ename||’is a’||job as ......

From emp;

nvl( ) 函数

NVL (expr1, expr2)->expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型NULLIF (expr1, expr2) ->相等返回NULL,不等返回expr1 

 

例如:

SQL> select ename,NVL(comm, -1) from emp;

 

ENAME NVL(COMM,-1)

------- ----

SMITH -1

ALLEN 300

WARD 500

JONES -1

MARTIN 1400

BLAKE -1

FORD -1

MILLER -1

其中显示-1的本来的值全部都是空值的


0 0