我正在寻找一个postgresql查询来执行以下操作:
if(field1 > 0, field2 / field1 , 0)
Run Code Online (Sandbox Code Playgroud)
我试过这个查询,但它不起作用
if (field1 > 0)
then return field2 / field1 as field3
else return 0 as field3
Run Code Online (Sandbox Code Playgroud)
谢谢你
Jos*_*mit 116
如PostgreSQL的文档中阐明在这里:
SQL CASE表达式是一个通用条件表达式,类似于其他编程语言中的if/else语句.
代码段专门回答您的问题:
SELECT field1, field2,
CASE
WHEN field1>0 THEN field2/field1
ELSE 0
END
AS field3
FROM test
Run Code Online (Sandbox Code Playgroud)
Tha*_*kis 19
case when field1>0 then field2/field1 else 0 end as field3
Run Code Online (Sandbox Code Playgroud)
一般来说,case when ...is的替代方案coalesce(nullif(x,bad_value),y)(不能在 OP 的情况下使用)。例如,
select coalesce(nullif(y,''),x), coalesce(nullif(x,''),y), *
from ( (select 'abc' as x, '' as y)
union all (select 'def' as x, 'ghi' as y)
union all (select '' as x, 'jkl' as y)
union all (select null as x, 'mno' as y)
union all (select 'pqr' as x, null as y)
) q
Run Code Online (Sandbox Code Playgroud)
给出:
coalesce | coalesce | x | y
----------+----------+-----+-----
abc | abc | abc |
ghi | def | def | ghi
jkl | jkl | | jkl
mno | mno | | mno
pqr | pqr | pqr |
(5 rows)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
147364 次 |
| 最近记录: |