programing

postgresql의 IF-THEN-ELSE 문

topblog 2023. 5. 28. 19:52
반응형

postgresql의 IF-THEN-ELSE 문

다음을 수행하기 위해 postgresql 쿼리를 작성하려고 합니다.

if(field1 > 0,  field2 / field1 , 0)

이 쿼리를 시도해 보았지만 작동하지 않습니다.

if (field1 > 0)
then return field2 / field1 as field3
else return 0 as field3

감사합니다

Postgre에 명시된 바와 같이.SQL 문서 위치:

SQL CASE 표현식은 다른 프로그래밍 언어의 if/else 문장과 유사한 일반 조건부 표현식입니다.

귀하의 질문에 구체적으로 답변하는 코드 조각:

SELECT field1, field2,
  CASE
    WHEN field1>0 THEN field2/field1
    ELSE 0
  END 
  AS field3
FROM test
case when field1>0 then field2/field1 else 0 end as field3

일반적으로, 의 대안.case when ...이라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

제공:

 coalesce | coalesce |  x  |  y  
----------+----------+-----+-----
 abc      | abc      | abc | 
 ghi      | def      | def | ghi
 jkl      | jkl      |     | jkl
 mno      | mno      |     | mno
 pqr      | pqr      | pqr | 
(5 rows)

언급URL : https://stackoverflow.com/questions/19029842/if-then-else-statements-in-postgresql

반응형