이 섹션에서는 다음에 대해 설명합니다.SQL-호환 조건식 에서 사용 가능PostgreSQL.
팁:귀하의 요구가 다음의 능력을 넘어서는 경우 이러한 조건식을 고려해 볼 수도 있습니다. 보다 토토 캔력이 뛰어난 프로그래밍으로 저장 프로시저 작성 언어.
그SQL 사례토토 캔식은 일반적인 조건부입니다. 다른 프로그래밍의 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 사례토토 캔식은 평가되지 않습니다. 결과를 결정하는 데 필요하지 않은 하위 토토 캔식. 예를 들어, 이것은 다음과 같은 상황을 피할 수 있는 방법입니다. 0으로 나누기 실패:
SELECT ... WHERE CASE WHEN x < 0 THEN y/x 1.5 ELSE false END;
참고:설명에 따라섹션 34.6, 함수 및 표시된 연산자불변될 수 있습니다 쿼리가 계획된 시점이 아닌 계획된 시점에 평가됩니다. 실행. 이는 하위 토토 캔식의 상수 부분을 의미합니다. 쿼리 실행 중에 평가되지 않은 항목은 여전히 쿼리 계획 중에 평가되었습니다.
합체(값 [, ...])
그합체함수 반환
null이 아닌 첫 번째 인수입니다. Null이 반환됩니다.
모든 인수가 null인 경우에만. 대체해서 사용하는 경우가 많습니다
데이터를 검색할 때 null 값의 기본값
예를 들어 디스플레이:
SELECT COALESCE(설명, short_description, '(없음)') ...
좋아요사례토토 캔,합체다음 인수만 평가합니다.
결과를 결정하는 데 필요합니다. 즉, 다음 주장에 대한 주장이다.
null이 아닌 첫 번째 인수의 오른쪽은 평가되지 않습니다. 이
SQL 표준 함수는 다음과 유사한 기능을 제공합니다.NVL그리고IFNULL, 다른 데이터베이스에서 사용됨
시스템.
NULLIF(값1, 값2)
그NULLIF함수는 다음을 반환합니다.
인 경우 null 값값1같음값2; 그렇지 않으면 반환됩니다.값1. 이것은 다음에 사용될 수 있습니다
의 역연산을 수행한다.합체위에 제시된 예:
SELECT NULLIF(값, '(없음)') ...
만약값1is(없음), null을 반환하고, 그렇지 않으면 반환값1.
가장 훌륭함(값 [, ...])
최소(값 [, ...])
그가장 훌륭함그리고최소함수는 가장 큰 것을 선택하거나
여러 토토 캔식 목록에서 가장 작은 값입니다. 는
토토 캔식은 모두 공통 데이터 유형으로 변환 가능해야 합니다.
이는 결과 유형이 됩니다(참조섹션 10.5자세한 내용). NULL
목록의 값은 무시됩니다. 다음 경우에만 결과는 NULL이 됩니다.
모든 토토 캔식은 NULL로 평가됩니다.
참고가장 훌륭함그리고최소SQL에 없습니다.
표준이지만 일반적인 확장입니다. 일부 다른 데이터베이스는
인수가 NULL인 경우에만 NULL을 반환하는 것이 아니라
모두 NULL입니다.