(一)函数语法:
sign(n)
函数说明:
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 (是和0比较)
示例:
a=10,b=20
则sign(a-b)返回-1
(二)函数
decode
具体:
DECODE(字段,比较1,值1,比较2,值2,.....,比较n,值n缺省值) 其实是:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
示例:
DECODE("字段",1,"男","女") 字段的值为"1"时,为男 。否则为:女
如:
1、职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录 中的工资字段值?
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2)salary from employee
2、select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
(三)函数 case 字段 when …… then …… else …… end
case 字段 when …… and …… then …… else …… end
示例:
1、各种性别的人数进行统计,sql语句如下
select
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2 then 1 else 0 end) 性别为空
from users u;
执行结果如下
男性 女性 性别为空
1 41 15 0
sign(n)
函数说明:
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0 (是和0比较)
示例:
a=10,b=20
则sign(a-b)返回-1
(二)函数
decode
具体:
DECODE(字段,比较1,值1,比较2,值2,.....,比较n,值n缺省值) 其实是:DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
示例:
DECODE("字段",1,"男","女") 字段的值为"1"时,为男 。否则为:女
如:
1、职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录 中的工资字段值?
select decode(sign(salary - 8000),1,salary*1.15,-1,salary*1.2)salary from employee
2、select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
(三)函数 case 字段 when …… then …… else …… end
case 字段 when …… and …… then …… else …… end
示例:
1、各种性别的人数进行统计,sql语句如下
select
sum( case u.sex when 1 then 1 else 0 end) 男性,
sum( case u.sex when 2 then 1 else 0 end) 女性,
sum( case when u.sex<>1 and u.sex<>2 then 1 else 0 end) 性别为空
from users u;
执行结果如下
男性 女性 性别为空
1 41 15 0
2、一个字段上的判断条件然后求和
sum(case when cast(xb.jkr As Date) >= gg.RZKSSJ and
cast(xb.jkr As Date) <= gg.RZJSSJ then xb.dky
end)
###decode和case……when……等价
在判断条件为一个范围的时候,用case……when……