2014-10-01 10 views
7

In SQL, wie die Zeilen einer Tabelle auswählen, wo eine Spalte (Datentyp: number) Infinity auf Oracle 10g entspricht?Wählen Sie, wo die Zahl gleich unendlich ist

select * from MYTABLE where MYCOLUMN = Infinity; 
+1

Was ist der Datentyp der Spalte? – Sasse

+0

@Sasse Es ist eine 'Nummer'. – BnJ

+1

Welche Datenbank benutzen Sie? – Sasse

Antwort

7

Von Laurent Schneider:

select * from MYTABLE where MYCOLUMN = binary_double_infinity; 

Oder mit einem impliziten Stimmen, nur:

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

Oder mit the is infinite floating point condition:

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

Ich würde einen SQL-Fiddle befestigen, aber Laurent bemerkte: "Erwarten Sie eine Menge Bugs mit Ihren Orakelkunden"; das funktioniert in SQL Developer, aber SQL Fiddle ruft einen numerischen Überlauf ab.

+0

Gut, mir war nicht bewusst "ist unendlich". –

+0

@LalitKumarB - weder war ich bis vor ein paar Minuten und experimentiert, um zu sehen, warum 'ist inf 'nicht funktioniert * 8-) –

2

erste Mal sehen, wie Infinity erhalten:

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

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

Nun lassen Sie uns auf den Vergleich aussehen:

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

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

aktualisieren: Dank Alex, die is infinite Klausel auch eine Option.

Ich bin auf 12.1.0.1.

Die gleiche Abfrage mit is infinite Klausel:

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

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

Wie die' ist unendlich' Tests sowohl für positive und * negative * unendlich, ein zusätzliches Prädikat ' und n> 0

Verwandte Themen