也不用创建啊,有个函数叫sign
创新互联坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都网站设计、做网站、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的黄平网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
用法:
select sign(数值) from dual
大于0返回1,等于0返回0,小于0返回-1
你说的那个
select * from count where sign(num1)=1
得出来的就是为正数的了
---补充--
create or replace FUNCTION NUM(v_num number)
return int is
Result int;
begin
if(v_num 0) then
Result := -1;
end if;
if(v_num = 0) then
Result := 0;
end if;
if(v_num 0) then
Result := 1;
end if;
return(Result);
end num;
用法与sign一致
如select num(100) from dual;
在Oracle中Number类型可以用来存储0,正负定点或者浮点数,可表示的数据范围在
1.0 * 10(-130) —— 9.9...9 * 10(125) {38个9后边带88个0}
的数字,当Oracle中的数学表达式的值=1.0*10(126)时,Oracle就会报错。
Number的数据声明如下:
表示 作用 说明
Number(p, s) 声明一个定点数 p(precision)为精度,s(scale)表示小数点右边的数字个数,精度最大值为38,scale的取值范围为-84到127
Number(p) 声明一个整数 相当于Number(p, 0)
Number 声明一个浮点数 其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。
定点数的精度(p)和刻度(s)遵循以下规则:
当一个数的整数部分的长度 p-s 时,Oracle就会报错
当一个数的小数部分的长度 s 时,Oracle就会舍入。
当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。
当s p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入
oracle的number类型带括号时如:NUMBER(P,S),只是用来指定所存储数据的精度等制约条件的,当所存储的数据超出你预先指定的精度的时候,Oracle会给你返回一个错误。反过来说,但你不指定精度等制约条件的是时候,也就是你默认使用Oracle自身所设定的最大精度等制约条件,当然是可以用来存储负数或小数的。如下,Oracle官方文档上是这样描述的。(描述中的precision 就是上文中的P,scale就是上文中的S)
Specify a floating-point number using the following form:
NUMBER
The absence of precision and scale designators specifies the maximum range and
precision for an Oracle number.
Private Sub Command1_Click() If Text1.Text 0 Then Print "负数" Else If Text1.Text = 0 Then Print "0" Else: Print "正数" End Sub
使用number类型。定义时这样写,number(6,3)。其中6表示一共6位。3表示有3位是小数。
select * from A where to_char(日期字段,'yyyymm')=to_char(add_months(sysdate,-1),'yyyymm')
这样试验一下,表名和字段名你替换一下,也就是把A和日期字段这俩地方换一下