postgresql: получение ошибочного синтаксиса ввода для типа двойной точности: "Нуль" - PullRequest
0 голосов
/ 09 марта 2020

Наличие таблицы с тремя столбцами:

enter image description here

Исходные данные выглядят следующим образом:

enter image description here

Я пытаюсь преобразовать таблицу в почасовые данные, суммируя значения энергии. Я использовал эту команду, но получил ошибку => неверный синтаксис ввода для типа двойной точности: «Null»:

SELECT lclid, date_trunc('hour', tstp) AS HOUR, COALESCE(SUM(CAST(energy as double precision)) 
FROM halfhourly 
WHERE energy IS NOT NULL 
GROUP BY lclid, HOUR;

Я искал некоторое время, но не могу найти решение. Пожалуйста, помогите!

1 Ответ

2 голосов
/ 10 марта 2020

Ваш столбец содержит строковый литерал 'Null'. Вам нужно преобразовать это в правильное значение null. Например, это можно сделать с помощью nullif()

 CAST(nullif(lower(energy),'null') as double precision)

. Вы можете использовать это же выражение для правильного преобразования этого столбца в тип double precision:

alter table halfhourly
   alter column energy type double precision 
   using CAST(nullif(lower(energy),'null') as double precision);

. Обратите внимание, что это касается только с ошибкой, которую вы показали. Если в этом столбце больше недопустимых значений, вам придется работать с каждым из них аналогичным образом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...