У меня есть таблица Postgres со строковым столбцом, содержащим числовые значения. Мне нужно преобразовать эти строки в числа для математики, но мне нужны оба значения NULL
, а также пустые строки, которые будут интерпретироваться как 0
.
Я могу преобразовать пустые строки в нулевые значения:
# select nullif('','');
nullif
--------
(1 row)
И я могу преобразовать нулевые значения в 0
:
# select coalesce(NULL,0);
coalesce
----------
0
(1 row)
И я могу преобразовать строки в числа:
# select cast('3' as float);
float8
--------
3
(1 row)
Но когда я пытаюсь объединить эти методы, я получаю ошибки:
# select cast( nullif( coalesce('',0), '') as float);
ERROR: invalid input syntax for integer: ""
LINE 1: select cast( nullif( coalesce('',0), '') as float);
# select coalesce(nullif('3',''),4) as hi;
ERROR: COALESCE types text and integer cannot be matched
LINE 1: select coalesce(nullif('3',''),4) as hi;
Что я делаю неправильно?