运行以下命令时,如何返回0而不是null:
SELECT MAX(X) AS MaxX
FROM tbl
WHERE XID = 1
Run Code Online (Sandbox Code Playgroud)
(假设没有XID = 1的行)
我有一个Postgres表,其中包含一个带有数值的字符串列.我需要将这些字符串转换为数字的数字,但我需要将两个NULL值以及空字符串解释为0.
我可以将空字符串转换为空值:
# select nullif('','');
nullif
--------
(1 row)
Run Code Online (Sandbox Code Playgroud)
我可以将null值转换为0:
# select coalesce(NULL,0);
coalesce
----------
0
(1 row)
Run Code Online (Sandbox Code Playgroud)
我可以将字符串转换为数字:
# select cast('3' as float);
float8
--------
3
(1 row)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试结合这些技术时,我会遇到错误:
# 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 …Run Code Online (Sandbox Code Playgroud)