В SQL, как выбрать строки таблицы, где столбец (тип данных: number
) равен Infinity
на Oracle 10g?Выбрать, где число равен Infinity
select * from MYTABLE where MYCOLUMN = Infinity;
В SQL, как выбрать строки таблицы, где столбец (тип данных: number
) равен Infinity
на Oracle 10g?Выбрать, где число равен Infinity
select * from MYTABLE where MYCOLUMN = Infinity;
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 скрипку, но Лоран отметил: «Ожидайте множество ошибок с вашими клиентами оракула»; это работает в SQL Developer, но SQL Fiddle получает числовое переполнение.
Хорошо, я не знал, что 'бесконечно'. –
@LalitKumarB - не был я до нескольких минут назад и экспериментировал, чтобы понять, почему 'is inf' не работает * 8-) –
Давайте посмотрим сначала, как получить 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
Update: Благодаря 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
Как бесконечные тесты как для положительной, так и для * отрицательной * бесконечности, дополнительный предикат' и n> 0' следует добавить, чтобы получить тот же результат, что и для 'col = binary_double_infinity'. –
Какой тип данных столбца? – Sasse
@Sasse Это 'номер'. – BnJ
Какую базу вы используете? – Sasse