Невозможно преобразовать из NaN в 0 в Postgresql базе данных - PullRequest
0 голосов
/ 19 июня 2020

У меня проблема с NaN в Postgresql базе данных.

Столбец, который я хочу обновить, имеет тип numeri c. В любом случае, когда я создал строки db в базе данных, он показывает мне некоторые строки «NaN».

И когда я хочу обновить «NaN» до 0, это дает мне синтаксическую ошибку, потому что столбец числовой c.

Следующее, что я использовал в качестве запроса:

UPDATE anytable 
  SET "anycolumn" = 0 
WHERE "anycolumn" = 'NaN';

Ошибка на немецком языке:

ungültige Eingabesyntax für Typ integer: »NaN«
SQL состояние: 22P02
Персонаж: 85

Br

Марсель

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Это не будет работать со столбцами integer, потому что NaN не поддерживается для целых чисел.

Но он должен нормально работать для numeric, real и double precision:

SELECT 'NaN'::numeric;

 numeric 
---------
     NaN
(1 row)

SELECT 'NaN'::integer;

ERROR:  invalid input syntax for type integer: "NaN"
LINE 1: SELECT 'NaN'::integer;
               ^
SELECT 'NaN'::double precision;

 float8 
--------
    NaN
(1 row)
0 голосов
/ 19 июня 2020

Я полагаю, что ваш столбец действительно содержит null значений (которые отображаются как 'NaN 'в вашем клиенте). Таким образом, вы должны написать это как:

UPDATE anytable SET anycolumn = 0 WHERE anycolumn IS NULL;
...