编程开发 > JAVA > 文章内容

java基础知识总结(143)

2016-9-20编辑:ljnbset

单行函数计算

nvl(bonus, 0)

upper(job) = 'ANALYST'

round(salary, 2)

to_char(sysdate, 'yyyy/mm/dd')

to_date('2012-01-12','yyyy-mm-dd')

select ename, salary, bonus,

coalesce(bonus, salary * 0.5, 100)

as bo

from emp_ning;

coalesce(list):

返回参数列表中第一个非空值

0-9分

create table ielts_ning(name char(10),s1 number(2,1),s2 number(2,1),s3 number(2,1),s4 number(2,1));

insert into ielts_ning values('A', 8, 8, 6, 7);

insert into ielts_ningvalues('B', 6, 6, 7, 7);

insert into ielts_ningvalues('C', 6, 7, 7, 7);

insert into ielts_ningvalues('D', 8, 6.5, 6, 6);

姓名 听力 阅读 写作 口语 总分

name  s1  s2   s3    s4

      number(2,1)

张三 8    8    6     7  7.25-> 7.5

李四 6    6    7     7  6.5 -> 6.5

     6    7    7     7  6.75-> 7

                        6.125 -> 6

                        6.625  6.5

[0, 0.25) [0.25, 0.75) [0.75, 1)

   0            0.5       1

select name, s1, s2, s3,s4,

      (s1+s2+s3+s4)/4  s

from ielts_ning;

7.25

整数位: trunc((s1+s2+s3+s4)/4) -> 7

小数:mod((s1+s2+s3+s4)/4, 1) -> 0.25

select name, s1, s2, s3, s4,

trunc((s1+s2+s3+s4)/4) +

case when mod((s1+s2+s3+s4)/4, 1) < 0.25       then 0

     when mod((s1+s2+s3+s4)/4,1)>=0.25              and 

          mod((s1+s2+s3+s4)/4,1)<0.75

     then 0.5

     when mod((s1+s2+s3+s4)/4, 1) >= 0.75      then 1

end as total_s

from ielts_ning;

double calculate(double score){

    int i = trunc(score);//整数

    double j = mod(score, 1); //小数

    double result = 0;

    if (j < 0.25)

       result = i;

    else if ( j >= 0.25 && j < 0.75)

       result = i + 0.5;

    else if ( j >= 0.75)

       result = i + 1;

    return result;

}

create or replace function calculate_ning(score number)

return number

is

  --定义变量

  i number; --整数

  j number; --小数

  result number; --返回结果

begin

  --程序体

  i := trunc(score); --数据库中赋值:=

  j := mod(score, 1);

  if j < 0.25 then

     result := 0;

  elsif j >= 0.25 and j < 0.75 then

     result := 0.5;

  elsif j >= 0.75 then

     result := 1;

  end if;

  return i + result;

end;

/

Function Created. 表示创建成功

Function Created  with Compil...编译错误

SQL>show errors 检查错误信息

修改后, 再次执行, 直到创建成功为止

--函数建立以后,在sql语句中使用

select name, s1, s2, s3, s4, calculate_ning((s1 + s2 + s3 + s4) / 4) from ielts_ning;

--当数据库中提供的函数不够用时,可以创建自己的函数

--和java中定义自己的方法是一样的道理.

nvl                     length()

upper                   iterator()

round                   indexOf()

calcaulate_ning         random()

.....                   code15To18()

第一部分: SQL 语句

第二部分: PL/SQL: 在数据库中编程

           包括:funcation 函数

                procedure 过程

                package   包

                trigger   触发器

select ename, job, salary,

case job when 'clerk' then salary * 1.05

         when 'Programmer' then salary * 1.1

         when 'Analyst' then salary * 1.15

         else salary

end as new_sal

from emp_ning;

--用case实现

case when job = 'clerk' then salary * 1.05

     when job = 'Programmer' then salary*1.1

     when job = 'Analyst' then salary * 1.15

     else salary

end

--用decode函数实现

select ename, job, salary,

decode(upper(job), 'CLERK', salary * 1.05,

            'PROGRAMMER', salary * 1.1,

            'ANALYST', salary * 1.15,

            salary) as new_sal

from emp_ning;

java基础知识总结(142)

热点推荐

登录注册
触屏版电脑版网站地图