关于Oracle取整的函数分别有以下几种:
创新互联服务项目包括项城网站建设、项城网站制作、项城网页制作以及项城网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,项城网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到项城省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
1.取整(大)
select ceil(-1.001) value from dual
2.取整(小)
select floor(-1.001) value from dual
3.取整(截取)
select trunc(-1.002) value from dual
4.取整(舍入)
select round(-1.001) value from dual
Oracle number datatype 语法:NUMBER[(precision [, scale])]
简称:precision -- p scale -- s
NUMBER(p,s)
范围: 1 = p =38, -84 = s = 127
保存数据范围:-1.0e-130 = number value 1.0e+126
保存在机器内部的范围: 1 ~ 22 bytes
有效位:从左边第一个不为0的数算起的位数。
s的情况:
s 0
精确到小数点右边s位,并四舍五入。然后检验有效位是否 = p。
s 0
精确到小数点左边s位,并四舍五入。然后检验有效位是否 = p + |s|。
s = 0
此时NUMBER表示整数。
从而,Oracle可以存储、可以运算的最大整数是 1e126 -1 。
declare
n number:=0;
begin
for i in REVERSE 1..125 loop
n := n + 9*power(10,i);
dbms_output.put_line(i || '--' || n);
end loop;
insert into tt(id)values(n);
commit;
end;
/
经实际验证,的确可以存放1e126-1,但无法查看,也无法参与运算。
如果 是24.24要怎么弄?你可以判断他是大于1 还是小于1
如果大于1 再判断他是不是整数,如果小于1 判断 等不等于0 然后再用round()函数,或者 substr 就可以了!
ceil(x) 向上取整
floor(x) 向下取整
round(x,n) 当n=0时就是取整,四舍五入法则
--简单循环
declare
c number(3):=1;
begin
loop
if mod(c,7)=0 then
dbms_output.put_line(c);
end if;
c:=c+1;
exit when c100;
end loop;
end;
--FOR循环
begin
for x in (select level from dual where mod(level,7)=0 connect by level=100 ) loop
dbms_output.put_line(x.level);
end loop;
end;
--while
declare
c number(3) := 1;
begin
while c = 100 loop
if mod(c, 7) = 0 then
dbms_output.put_line(c);
end if;
c := c + 1;
end loop;
end;