2014-10-01 62 views
7

在SQL中,如何选择其中一列(数据类型:number)表的行上的Oracle 10g等于Infinity选择其中数等于无穷大

select * from MYTABLE where MYCOLUMN = Infinity; 
+1

什么是列的数据类型? – Sasse 2014-10-01 08:46:03

+0

@Sasse这是一个数字。 – BnJ 2014-10-01 08:47:02

+1

你在使用什么数据库? – Sasse 2014-10-01 08:47:23

回答

7

Laurent Schneider

select * from MYTABLE where MYCOLUMN = binary_double_infinity; 

或与隐式转换,只是:

select * from MYTABLE where cast(MYCOLUMN as binary_double) = binary_double_infinity; 

或者使用the is infinite floating point condition

select * from MYTABLE where cast(MYCOLUMN as binary_double) is infinite; 

我会附上一个SQL小提琴,但如Laurent指出,“预计你的oracle客户会遇到很多错误”;这适用于SQL Developer,但SQL Fiddle会得到数字溢出。

+0

好,我不知道“是无限的”。 – 2014-10-01 09:01:11

+0

@LalitKumarB - 既不是我,直到几分钟前,并尝试明白为什么'是inf'没有工作* 8) – 2014-10-01 09:03:11

2

让我们先看看如何得到Infinity

SQL> SELECT 1/0F COL FROM DUAL 
    2/

     COL 
---------- 
     Inf 

现在,让我们看一下比较:

SQL> WITH DATA AS(
    2 SELECT 1/0F COL FROM DUAL) 
    3 SELECT * FROM data WHERE col = binary_double_infinity 
    4/

     COL 
---------- 
     Inf 

更新:感谢亚历克斯,该is infinite子句也是一个选项。

我在12.1.0.1

is infinite子句相同的查询:

SQL> WITH DATA AS(
    2 SELECT 1/0F COL FROM DUAL) 
    3 SELECT * FROM data WHERE col is infinite 
    4/

     COL 
---------- 
     Inf 
+0

因为'是正面和负面* *无穷大,额外的谓词'infinite'测试并应添加n> 0以获得与col = binary_double_infinity相同的结果。 – 2017-04-02 08:00:49