Oracle经常使用函数

如下代码均在PL/SQL工具中测试经过函数

begin
  --绝对值
  dbms_output.put_line('绝对值: ' || ABS(-9));
  --向上取整
  dbms_output.put_line('向上取整: ' || CEIL(-124.2));
  --向下取整
  dbms_output.put_line('向下取整: ' || FLOOR(-124.2));
  --乘方运算 POWER(a,b)  a的b次方
  dbms_output.put_line('乘方运算: ' || POWER(4, 2));
  --四舍五入 round  有点难度
  dbms_output.put_line('四舍五入: ' || ROUND(123.456, 2));
  dbms_output.put_line('四舍五入: ' || ROUND(123.456, 1));
  dbms_output.put_line('四舍五入: ' || ROUND(123.456, 0));
  dbms_output.put_line('四舍五入: ' || ROUND(123.456, -1));
  dbms_output.put_line('四舍五入: ' || ROUND(123.456, -2));
  dbms_output.put_line('四舍五入: ' || ROUND(123.456, -3));
  -- 所有舍弃 注意与round进行比较
  dbms_output.put_line('非四舍五入: ' || trunc(123.456, 2));
  dbms_output.put_line('非四舍五入: ' || trunc(123.456, 1));
  dbms_output.put_line('非四舍五入: ' || trunc(123.456, 0));
  dbms_output.put_line('非四舍五入: ' || trunc(123.456, -1));
  dbms_output.put_line('非四舍五入: ' || trunc(123.456, -2));
  dbms_output.put_line('非四舍五入: ' || trunc(123.456, -3));
  --ASCII码
  dbms_output.put_line('ASCII码: ' || ASCII('A')); --65 a:97
  --LENGTH 不是字节并且不包含尾空格
  dbms_output.put_line('LENGTH: ' || LENGTH('李芳'));
  --字母大小写转换
  dbms_output.put_line('字母大写转换小写: ' || UPPER('a'));
  dbms_output.put_line('字母小写转换大写: ' || LOWER('B'));
end;工具

   结果:
  测试

   补充:
begin
  -- 求余
  dbms_output.put_line('求余:' || mod(5, 2));
  -- 求模
  dbms_output.put_line('求模:' || trunc(7 / 2));
  -- 开方
  dbms_output.put_line('开方:' || sqrt(4));
  -- 对数
  dbms_output.put_line('对数:' || log(2, 16));
  dbms_output.put_line('天然对数:' || ln(100));
  -- e的x次方
  dbms_output.put_line('e的x次方:' || exp(2));
  -- 判断一个数的正负  1:+ 0:0 -1:-
  dbms_output.put_line('2判断正负:' || sign(2));
  dbms_output.put_line('0判断正负:' || sign(0));
  dbms_output.put_line('-2判断正负:' || sign(-2));
end;
结果:spa

3.日期函数
 begin
  --日期
  dbms_output.put_line('当前日期: ' || sysdate);
  dbms_output.put_line('当前日期转换为字符型再输出: ' || TO_CHAR(sysdate));
  --当前月份的最后一天
  dbms_output.put_line('当前月的最后一天: ' || last_day(sysdate));
  --字符转为日期  注意格式 年日月
  dbms_output.put_line('字符转为日期: ' || to_date('2015-10-03', 'yyyy-dd-mm'));
  --2015-02-05到2015-10-05之间的月份数目 第一个参数减去第二个参数
  dbms_output.put_line(months_between(to_date('2015-10-05', 'yyyy-mm-dd'),
                                      to_date('2015-02-05', 'yyyy-mm-dd')));
 end;
 结果:ast

补充:
  -- 时间推移,减法相似   本例结合存储过程
create or replace procedure dateTest as
  d1 varchar2(20);
  d2 varchar2(20);
  d3 varchar2(20);
  d4 varchar2(20);
  d5 varchar2(20);
  d6 varchar2(20);
  d7 varchar2(20);
  d8 varchar2(20);
begin
  select to_char(sysdate, 'yyyy-mm-dd HH24:MI:SS') into d1 from dual;
  -- 添加月
  select to_char(add_months(sysdate, 1), 'yyyy-mm-dd HH24:MI:SS')
    into d2
    from dual;
  select to_char(add_months(sysdate, 12), 'yyyy-mm-dd HH24:MI:SS')
    into d3
    from dual;
  -- 添加天  
  select to_char(sysdate + 7, 'yyyy-mm-dd HH24:MI:SS') into d4 from dual;
  select to_char(sysdate + 1, 'yyyy-mm-dd HH24:MI:SS') into d5 from dual;
  -- 添加小时
  select to_char(sysdate + 1 / 24, 'yyyy-mm-dd HH24:MI:SS')
    into d6
    from dual;
  -- 添加分钟 
  select to_char(sysdate + 1 / 24 / 60, 'yyyy-mm-dd HH24:MI:SS')
    into d7
    from dual;
  -- 添加秒
  select to_char(sysdate + 1 / 24 / 60 / 60, 'yyyy-mm-dd HH24:MI:SS')
    into d8
    from dual;
  dbms_output.put_line('当前日期:' || d1);
  dbms_output.put_line('当前日期加1个月:' || d2);
  dbms_output.put_line('当前日期加12个月:' || d3);
  dbms_output.put_line('当前日期加1周:' || d4);
  dbms_output.put_line('当前日期加1天:' || d5);
  dbms_output.put_line('当前日期加1小时:' || d6);
  dbms_output.put_line('当前日期加1分钟:' || d7);
  dbms_output.put_line('当前日期加1秒钟:' || d8);
end dateTest;sed

begin
  dateTest();
end;
       
运行结果:date


补充2:
  --trunc函数精析
  select sysdate as now,
         trunc(sysdate, 'yy') as 本年第一天,
         trunc(sysdate, 'mm') as 本月第一天,
         trunc(sysdate, 'dd') as 当天,
         trunc(sysdate, 'd') as 本周第一天,
         to_char(sysdate, 'w') as 本月第几周,
         to_char(sysdate, 'd') as 本周第几天,--周日为第一天
         trunc(sysdate, 'hh') as 整点小时,
         trunc(sysdate, 'mi') as 整点时分
    from dual;
运行结果:select

 

4.统计函数
  --统计
select count(0) from service_resource_used;
--最大
select max(cpuusedper) from service_resource_used;
--最小
select min(cpuusedper) from service_resource_used;
--平均
select avg(cpuusedper) from service_resource_used;
--综合
select count(0) as 总记录数,
       max(cpuusedper) as cpu最大利用率,
       min(cpuusedper) cpu最小利用率,
       avg(cpuusedper) cpu平均利用率
  from service_resource_used;service

结果:im

相关文章
相关标签/搜索