Как мне вставить бесконечные значения в столбцы REAL / FLOAT4 в DuckDB?

Скажем, у меня есть таблица с именем table_1 с одним столбцом с именем col_1, который имеет тип REAL / FLOAT4 в DuckDB. Как мне вставить в col_1 специальные значения с плавающей запятой, такие как -Infinity, NaN и Infinity? Я пробовал вставлять эти значения разными способами, но безуспешно. Мне удалось получить значения для вставки в таблицу PostgreSQL, но не с помощью DuckDB, хотя у них обоих одинаковое описание для обновления этих значений на своих веб-страницах. Например, вот несколько примеров операторов вставки, которые работают в моей таблице PostgreSQL, но не работают в моей таблице DuckDB.

      INSERT INTO table_1 VALUES ('Infinity');
INSERT INTO table_1 VALUES ('-Infinity');
INSERT INTO table_1 VALUES ('NaN');

Ниже приводится описание специальных значений с плавающей запятой в DuckDB. Я также разместил ссылки на описания обеих баз данных для числового типа, которые включают описание специальных значений с плавающей запятой.

"Помимо обычных числовых значений, типы с плавающей запятой имеют несколько специальных значений:

Infinity -Infinity NaN

Они представляют специальные значения IEEE 754 «бесконечность», «отрицательная бесконечность» и «не число», соответственно. (На машине, чья арифметика с плавающей запятой не соответствует стандарту IEEE 754, эти значения, вероятно, не будут работать должным образом.) При записи этих значений в виде констант в команде SQL вы должны заключить их в кавычки, например: UPDATE table SET x = '-Бесконечность'. При вводе эти строки распознаются без учета регистра ».

DuckDB Numerichttps://duckdb.org/docs/sql/data_types/numeric

PostgreSQL Numerichttps://www.postgresql.org/docs/current/datatype-numeric.html

1 ответ

В DuckDB мы не разрешаем хранить в столбцах специальные числа с плавающей запятой.

Это просто усложняет некоторые алгоритмы и (я слышал, что) это технически не разрешено в стандарте SQL (хотя я никогда не проверял это сам).

Другие вопросы по тегам