数値を含む文字列を持つPostgresテーブルがあります。私はこれらの文字列を数学のための数に変換する必要がありますが、NULL
値と空文字列の両方が0
と解釈される必要があります。文字列を数値にキャストし、nullまたは空の文字列を0として解釈します。
私はconvert empty strings into null valuesすることができます:
# select nullif('','');
nullif
--------
(1 row)
そして、私ができconvert null values into a 0
:
# select coalesce(NULL,0);
coalesce
----------
0
(1 row)
そして、私ができconvert strings into numbers:
# 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;
私は間違っていますか?
サイドノート:DATA1は、空の文字列またはNULLが含まれている場合は、新しい列にNULLたいと仮定すると、あなたはこのような何かを行うことができますほとんどの場合、 'float'の代わりに' numeric'を使います。 'float'が本当に必要であることを知っているときだけ、' float'を使います。 –