Rzuć ciąg znaków na liczbę, interpretując ciąg pusty lub pusty jako 0

Mam tabelę Postgres z kolumną łańcucha zawierającą wartości liczbowe. Muszę przekonwertować te ciągi znaków na liczby dla matematyki, ale potrzebuję obuNULL wartości oraz puste ciągi do interpretacji jako0.

mogękonwertuj puste ciągi znaków na wartości puste:

# select nullif('','');
 nullif 
--------

(1 row)

I ja mogęprzekonwertować wartości null na a0:

# select coalesce(NULL,0);
 coalesce 
----------
        0
(1 row)

I ja mogękonwertować ciągi na liczby:

# select cast('3' as float);
 float8 
--------
      3
(1 row)

Ale kiedy próbuję połączyć te techniki, dostaję błędy:

# 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;

Co ja robię źle?

questionAnswers(3)

yourAnswerToTheQuestion