SQLで、Oracle 10gで列(データ型:number
)がInfinity
と等しいテーブルの行を選択するにはどうすればよいですか?
select * from MYTABLE where MYCOLUMN = Infinity;
から 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は数値オーバーフローを取得します。
まず、取得方法を見てみましょう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
pdate:Alexのおかげで、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