이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.4다른_메이저 토토 사이트메이저 토토 사이트8버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

9.17. 조건식

이 섹션에서는 다음에 대해 설명합니다.SQL에서 사용 가능한 호환 조건식PostgreSQL.

이러한 조건식의 기능을 넘어서는 요구 사항이 있는 경우 보다 사설 토토력이 풍부한 프로그래밍 언어로 서버측 함수를 작성하는 것을 고려할 수 있습니다.

참고

하지만합체, 가장 훌륭함최소구문적으로 함수와 유사하며 일반 함수가 아니므로 명시적으로 사용할 수 없습니다.VARIADIC배열 인수.

9.17.1. 사례

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

경우의 경우조건그때결과
     [언제 ...]
     [ELSE결과]
끝

사례절은 사설 토토식이 유효한 곳이면 어디든 사용할 수 있습니다. 각각조건다음을 반환하는 사설 토토식입니다.부울결과. 조건의 결과가 true이면,의 값사례사설 토토식은결과조건을 따르는 것, 나머지는사례사설 토토식은 처리되지 않습니다. 조건의 결과가 true가 아닌 경우 후속언제절도 같은 방식으로 검사됩니다. 그렇지 않은 경우언제 조건참이 나오며, 값은사례사설 토토식은결과ELSE절. 만약ELSE절이 생략되었으며 true인 조건이 없으면 결과는 null입니다.

예:

SELECT * FROM 테스트;

 에
---
 1
 2
 3

선택하다,
       a=1이면 '1'인 경우
            a=2이면 '2'
            ELSE '기타'
       종료
    테스트에서;

 | 케이스
---+---------
 1 | 하나
 2 | 두
 3 | 기타

모든 데이터 유형결과식은 단일 출력 유형으로 변환 가능해야 합니다. 보다섹션 10.5자세한 내용은.

다음이 있습니다단순형식사례위의 일반 형식의 변형인 사설 토토식:

사례사설 토토언제그때결과
    [언제 ...]
    [ELSE결과]
끝

첫번째사설 토토이 계산된 다음 각각의와 비교됩니다.사설 토토식언제절과 동일한 것이 발견될 때까지 절입니다. 일치하는 항목이 없으면결과ELSE절(또는 null 값)이 반환됩니다. 이는 다음과 유사합니다.스위치C의 진술

위의 예는 간단한 명령을 사용하여 작성할 수 있습니다.사례구문:

선택,
       CASE a WHEN 1 THEN '1'
              WHEN 2 THEN '둘'
              ELSE '기타'
       종료
    테스트에서;

 | 케이스
---+---------
 1 | 하나
 2 | 두
 3 | 기타

A 사례expression은 결과를 결정하는 데 필요하지 않은 하위 사설 토토식을 평가하지 않습니다. 예를 들어, 다음은 0으로 나누기 실패를 방지할 수 있는 방법입니다.

SELECT ... WHERE CASE WHEN x < 0 THEN y/x  1.5 ELSE false END;

참고

설명에 따라섹션 4.2.14, 사설 토토식의 하위 사설 토토식이 서로 다른 시간에 평가되는 다양한 상황이 있으므로 다음 원칙은사례필요한 하위 사설 토토식만 평가철갑이 아닙니다. 예를 들어 상수1/0하위 사설 토토식은 일반적으로 계획 시 0으로 나누기 실패를 초래합니다.사례런타임에 절대 입력되지 않는 팔입니다.

9.17.2. 합체

합체( [, ...])

합체함수는 null이 아닌 첫 번째 인수를 반환합니다. 모든 인수가 Null인 경우에만 Null이 반환됩니다. 표시하기 위해 데이터를 검색할 때 null 값을 기본값으로 대체하는 데 자주 사용됩니다. 예를 들면 다음과 같습니다.

SELECT COALESCE(설명, short_description, '(없음)') ...

이것은 반환됩니다.설명null이 아닌 경우, 그렇지 않은 경우short_descriptionnull이 아닌 경우, 그렇지 않은 경우(없음).

인수는 모두 결과 유형이 되는 공통 데이터 유형으로 변환 가능해야 합니다(참조토토 커뮤니티 PostgreSQL : 문서 : 12 : 10.5. 연합, 사례 및 관련 구성자세한 내용은).

좋아요사례사설 토토,합체결과를 결정하는 데 필요한 인수만 평가합니다. 즉, null이 아닌 첫 번째 인수 오른쪽에 있는 인수는 평가되지 않습니다. 이 SQL 표준 함수는 다음과 유사한 기능을 제공합니다.NVL그리고IFNULL, 이는 일부 다른 데이터베이스 시스템에서 사용됩니다.

9.17.3. NULLIF

NULLIF(값1, 값2)

NULLIF함수는 다음과 같은 경우 null 값을 반환합니다.값1같음값2; 그렇지 않으면 반환됩니다.값1. 이는 의 역연산을 수행하는 데 사용될 수 있습니다.합체위에 제시된 예:

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

이 예에서는, 만약is(없음), null이 반환되고, 그렇지 않으면의 값이 반환됩니다.반환되었습니다.

두 인수는 비슷한 유형이어야 합니다. 구체적으로 말하자면, 귀하가 작성한 것처럼 정확하게 비교됩니다.값1 = 값2그러므로 적합한 것이 있어야 합니다.=연산자를 사용할 수 있습니다.

결과는 첫 번째 인수와 동일한 유형이지만 미묘한 차이가 있습니다. 실제로 반환되는 것은 묵시적인의 첫 번째 인수입니다.=연산자이며 경우에 따라 두 번째 인수 유형과 일치하도록 승격됩니다. 예를 들어,NULLIF(1, 2.2)수율숫자, 없기 때문입니다정수 = 숫자연산자, 전용숫자 = 숫자.

9.17.4. 가장 훌륭함그리고최소

가장 훌륭함( [, ...])
최소( [, ...])

가장 훌륭함그리고최소함수는 사설 토토식 목록에서 가장 큰 값이나 가장 작은 값을 선택합니다. 사설 토토식은 모두 결과 유형이 되는 공통 데이터 유형으로 변환 가능해야 합니다(참조토토 커뮤니티 PostgreSQL : 문서 : 12 : 10.5. 연합, 사례 및 관련 구성자세한 내용은). 목록의 NULL 값은 무시됩니다. 모든 사설 토토식이 NULL로 평가되는 경우에만 결과는 NULL이 됩니다.

참고하세요가장 훌륭함그리고최소SQL 표준에는 없지만 일반적인 확장입니다. 일부 다른 데이터베이스에서는 모든 인수가 NULL인 경우에만 반환하는 것이 아니라 인수 중 하나라도 NULL인 경우 NULL을 반환하도록 합니다.