I have a Postgres table with a string column carrying numeric values. I need to convert these strings to numbers for math, but I need both NULL
values as well as em
The types of values need to be consistent; coalescing the empty string to a 0 means that you cannot then compare it to null
in the nullif
. So either of these works:
# create table tests (orig varchar);
CREATE TABLE
# insert into tests (orig) values ('1'), (''), (NULL), ('0');
INSERT 0 4
# select orig, cast(coalesce(nullif(orig,''),'0') as float) as result from tests;
orig | result
------+--------
1 | 1
| 0
| 0
0 | 0
(4 rows)
# select orig, coalesce(cast(nullif(orig,'') as float),0) as result from tests;
orig | result
------+--------
1 | 1
| 0
| 0
0 | 0
(4 rows)