Tôi có bảng Postgres với cột chuỗi mang giá trị số. Tôi cần phải chuyển đổi các chuỗi này thành các con số cho toán học, nhưng tôi cần cả hai giá trị NULL
cũng như các chuỗi trống cần được hiểu là 0
.Chuỗi ký tự thành số, diễn giải chuỗi rỗng hoặc trống là 0
tôi có thể convert empty strings into null values:
# select nullif('','');
nullif
--------
(1 row)
Và tôi có thể convert null values into a 0
:
# select coalesce(NULL,0);
coalesce
----------
0
(1 row)
Và tôi có thể convert strings into numbers:
# select cast('3' as float);
float8
--------
3
(1 row)
Nhưng khi tôi cố gắng để kết hợp những kỹ thuật này, tôi nhận được lỗi:
# 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;
Tôi đang làm gì sai?
Side lưu ý - đó là tốt hơn để sử dụng 'số' thay vì' float' trong hầu hết các trường hợp. Sử dụng 'float' chỉ khi bạn biết bạn thực sự cần' float'. –