2014-10-01 103 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