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?