web-dev-qa-db-ja.com

数が無限大に等しい場所を選択します

SQLで、Oracle 10gで列(データ型:number)がInfinityと等しいテーブルの行を選択するにはどうすればよいですか?

select * from MYTABLE where MYCOLUMN = Infinity;
11
BnJ

から Laurent Schneider

select * from MYTABLE where MYCOLUMN = binary_double_infinity;

または暗黙のキャストで、ちょうど:

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

または使用 is infinite浮動小数点条件

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

SQL Fiddleを添付しますが、Laurentが指摘したように、「Oracleクライアントには多くのバグが予想されます」。これはSQLDeveloperで機能しますが、SQL Fiddleは数値オーバーフローを取得します。

12
Alex Poole

まず、取得方法を見てみましょう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

pdateAlexのおかげで、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
2
Lalit Kumar B