postgresql의 IF-THEN-ELSE 문


답변:


146

여기 PostgreSQL 문서에 명시된 바와 같이 :

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

귀하의 질문에 구체적으로 대답하는 코드 스 니펫 :

SELECT field1, field2,
  CASE
    WHEN field1>0 THEN field2/field1
    ELSE 0
  END 
  AS field3
FROM test

7
호기심에서 if-then-else 문을 사용하는 해결책이 없었나요? 질문은 if-then-else를 요청했지만 대답은 switch-case 문입니다.
Abel Callejo

안녕 Abel, 질문은 특정 문제에 대한 해결책을 요청했습니다. 대답은 특정 문제를 해결합니다. SELECT문 내에서 사용할 수있는 조건문 중 하나는 여기CASE 에 설명되어 있습니다 .
Joseph Victor Zammit

이 경우 답변에 더 어려운 이유 또는 if-then 문을 사용하여 이것을 달성 할 수없는 이유를 추가하면 더 명확해질 것입니다.
막시 베 세라

2
@MaximilianoBecerra 완료되었습니다. 이것을 봐주세요. 제안 해 주셔서 감사합니다.
Joseph Victor Zammit 2017

AS명령은 필요하지 않습니다. 이 작업을 수행 할 수 있습니다END field3
파블로 빌라에게


2

일반적으로 대안 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)

가끔의 구경을하지 않으려는 case when이 법안에 맞는
StephenBoesch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.