9.18. 조건부 토토 꽁 머니

이 섹션은를 설명합니다.SQL-이용할 수있는 정식 조건 토토 꽁 머니식PostgreSQL.

귀하의 요구가 이러한 조건부 토토 꽁 머니식의 기능을 넘어서면보다 토토 꽁 머니적인 프로그래밍 언어로 서버 측 기능을 작성하는 것이 좋습니다..

Note

비록Coalesce, 가장 큰최소함수와 구문 적으로 유사하므로 일반적인 기능이 아니므로 명시 적으로 사용할 수 없습니다variadic배열 인수.

9.18.1. CASE

theSQL CASE토토 꽁 머니식은 다른 프로그래밍 언어의 IF/Else 문과 유사한 일반적인 조건 토토 꽁 머니식입니다 :

CASE조건the결과[언제 ...]
     [else결과]
끝

case토토 꽁 머니이 유효한 곳에서 클로스를 사용할 수 있습니다. 각조건a를 반환하는 토토 꽁 머니입니다.부울결과. 조건의 결과가 참이면의 값은CASE토토 꽁 머니은결과조건을 따르는 것은의 나머지 부분을 따릅니다.CASE토토 꽁 머니이 처리되지 않았습니다. 조건의 결과가 사실이 아닌 경우, 후속언제조항은 같은 방식으로 검사됩니다. 그렇지 않은 경우언제 조건true, 값의 값을 생산합니다CASE토토 꽁 머니은결과else절. 인 경우else조항이 생략되고 조건이없고, 결과는 null입니다.

예 :

선택 *에서 선택;

 에이
---
 1
 2
 3

A,
       a = 1 그런 다음 'one'인 경우
            a = 2 때 '2'
            다른 '기타'
       끝
    시험에서;

 A | 사례
---+------
 1 | 하나
 2 | 둘
 3 | 다른

모든 데이터 유형결과토토 꽁 머니식은 단일 출력 유형으로 변환 할 수 있어야합니다. 보다섹션 10.5자세한 내용은

a단순형태CASE위의 일반 양식의 변형 인 토토 꽁 머니 :

CASE토토 꽁 머니언제valuethe결과[언제 ...]
    [else결과]
끝

첫 번째토토 꽁 머니계산 된 다음 각와 비교하여value토토 꽁 머니언제토토 꽁 머니가 발견 될 때까지 조항. 일치하지 않으면결과else절 (또는 널 값)이 반환됩니다. 이것은와 비슷합니다.스위치C. 진술

위의 예는 단순한 것을 사용하여 작성할 수 있습니다CASE구문 :

A, A,
       CASE A가 1 일 때 '하나'
              2 시절 '2'
              다른 '기타'
       끝
    시험에서;

 A | 사례
---+------
 1 | 하나
 2 | 둘
 3 | 다른

aCASE토토 꽁 머니은 결과를 결정하는 데 필요하지 않은 하위 토토 꽁 머니을 평가하지 않습니다. 예를 들어, 이것은 부서별 실패를 피할 수있는 가능한 방법입니다 :

선택 ... x < 0 일 때의 경우 y/x 1.5 else false end;

Note

설명대로섹션 4.2.14CASE필요한 하위 토토 꽁 머니 만 평가는 철분이 없습니다. 예를 들어 상수1/0Subexpression은 일반적으로 A 내에 있더라도 계획 시간에 영역으로 실패하게됩니다CASE런 타임에 결코 입력되지 않는 팔.

9.18.2. Coalesce

Coalesce(value[, ...])

theCoalesce함수는 NULL이 아닌 인수의 첫 번째 인수를 반환합니다. NULL은 모든 인수가 NULL 인 경우에만 반환됩니다. 표시를 위해 데이터가 검색 될 때 NULL 값의 기본값을 대체하는 데 종종 사용됩니다.

Coalesce 선택 (설명, short_description, '(없음)'...

이것은 반환설명그것이 무효가 아닌 경우short_description그것이 null이 아닌 경우, 그렇지 않으면(없음).

인수는 모두 공통 데이터 유형으로 변환 할 수 있어야하며 결과의 유형이 될 것입니다 (참조배트맨 토토 PostgreSQL : 문서 : 14 : 10.5. 연합, 사례 및 관련 구성자세한 내용).

aCASE토토 꽁 머니,Coalesce결과를 결정하는 데 필요한 인수 만 평가합니다. 즉, 첫 번째가 아닌 논증의 권리에 대한 논쟁은 평가되지 않습니다. 이 SQL 표준 기능은와 유사한 기능을 제공합니다.NVLandifnull, 다른 일부 데이터베이스 시스템에서 사용됩니다.

9.18.3. Nullif

Nullif(value1, value2)

theNullif함수는 널 값을 반환합니다.value1Equalsvalue2; 그렇지 않으면 반환value1. 이것은의 역 작동을 수행하는 데 사용될 수 있습니다.Coalesce위에 주어진 예 :

SELECT NULLIF (value, '(없음)'...

이 예에서 ifvalueis(없음), null이 반환됩니다. 그렇지 않으면value반환되었습니다.

두 인수는 비슷한 유형이어야합니다. 구체적으로 말하면, 당신이 작성한 것처럼 정확히 비교됩니다value1=value2, 적절한 것이 있어야합니다=운영자 사용 가능.

결과는 첫 번째 인수와 같은 유형을 가지고 있지만 미묘함이 있습니다. 실제로 반환되는 것은 묵시적 첫 번째 주장입니다=운영자 및 경우에 따라 두 번째 인수 유형에 맞게 홍보 될 경우. 예를 들어,Nullif (1, 2.2)수율숫자, 없기 때문에정수 = 숫자운영자, Only숫자 = 숫자.

9.18.4. 가장 큰and최소

가장 큰(value[, ...])
최소(value[, ...])

the가장 큰and최소함수 수의 토토 꽁 머니 목록에서 가장 크거나 작은 값을 선택하십시오. 토토 꽁 머니식은 모두 공통 데이터 유형으로 전환 할 수 있어야하며 결과의 유형이됩니다 (참조배트맨 토토 PostgreSQL : 문서 : 14 : 10.5. 연합, 사례 및 관련 구성자세한 내용). 목록의 널 값은 무시됩니다. 결과는 모든 토토 꽁 머니식이 Null로 평가되는 경우에만 NULL입니다.

참고가장 큰and최소는 SQL 표준에 있지 않지만 공통 확장입니다. 일부 다른 데이터베이스는 모든 것이 모두 null 일 때가 아닌 인수가 널이면 NULL을 반환합니다.

정정 제출

문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면