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

相關文章
相關標籤/搜索