이 문서는 지원되지 않는 버전의 범퍼카 토토을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다젠 토토 PostgreSQL : 문서 : 17 : 10.5. 연합, 사례 및 관련버전 또는 위에 나열된 다른 지원되는 버전 중 하나입니다.

10.5. Union, case및 관련 구성

SQLUnion구조물이 일치해야합니다 아마도 단일 결과 세트가 될 수있는 유형이 다릅니다. 그만큼 해상도 알고리즘은 각 출력 열에 별도로 적용됩니다. 노조 쿼리. 그만큼Intersect제외Constructs Resolve OSSIMOR 유형 와 같은 방식으로Union. 그만큼CASE, 배열, , 가장 큰and최소CORPORTS는 동일한 것을 사용합니다 구성 요소 표현식을 일치시키고 선택하는 알고리즘 결과 데이터 유형.

해상도 유형Union, CASE및 관련 구성

  1. 모든 입력이 같은 유형 인 경우알 수없는, 해당 유형으로 해결.

  2. 입력이 도메인 유형 인 경우 모든 후속 단계에 대한 도메인의 기본 유형.[1]

  3. 모든 입력이 유형 인 경우알 수없는, 해결 as type텍스트(선호하는 유형의 문자열 카테고리). 그렇지 않으면,알 수없는입력 무시됩니다.

  4. 비 unknown 입력이 모두 동일한 유형 범주가 아닌 경우 실패하다.

  5. 선호하는 첫 번째 비 unknown 입력 유형을 선택하십시오. 해당 범주를 입력하십시오.

  6. 그렇지 않으면 허용하는 마지막 이외의 입력 유형을 선택하십시오 암시 적으로 변환 될 모든 이전의 비 unknown 입력은 그것. (적어도 첫 번째 유형은 목록은이 조건을 충족해야합니다.)

  7. 모든 입력을 선택한 유형으로 변환합니다. 없으면 실패 주어진 입력에서 선택한 유형으로 변환.

일부 예제가 따릅니다.

예 10-10. a 노동 조합

텍스트 'A'로 '텍스트'를 선택하십시오. Union Select 'b';

 텍스트
------
 에이
 비
(2 줄)

여기, 알 수없는 유형의 리터럴'b'의지 입력으로 해결텍스트.

예 10-11. 간단한 조합에서 유형 해상도

"Numeric"Union Select 1으로 1.2를 선택하십시오.

 숫자
-------
       1
     1.2
(2 줄)

문자 그럴1.2is type숫자정수value1암시 적으로 캐스트 될 수 있습니다숫자, 따라서 해당 유형이 사용됩니다.

예 10-12. 전달 된 노조의 유형 해상도

"Real"Union Select Cast ( '2.2'As real);

 진짜
------
    1
  2.2
(2 줄)

여기, 유형 이후Real암시 적으로는 할 수 없습니다 캐스트Integer그러나Integer암시 적으로 캐스트 될 수 있습니다Real, 노조 결과 유형은로 해결됩니다.Real.

예 10-13. 중첩 노조의 유형 해상도

선택 NULL UNION SELECT NULL UNION SELECT 1;

오류 : Union 유형 텍스트와 정수는 일치 할 수 없습니다

이 실패는이기 때문에 발생합니다.범퍼카 토토다중 취급Unions 쌍별 연산의 둥지; 즉, 이 입력은와 동일합니다.

(선택 NULL UNION SELEC SELECT NULL) UNION SELECT 1;

내부Union방출로 해결됩니다 유형텍스트15338_15393Union입력이 있습니다 유형텍스트andInteger, 관찰 된 오류로 이어집니다. 문제는 확인하여 해결할 수 있습니다 그게 가장 왼쪽Union하나 이상이 있습니다 원하는 결과 유형의 입력.

Intersectand제외운영도 마찬가지로 쌍으로 해결됩니다. 그러나이 섹션에 설명 된 다른 구성은 고려합니다 하나의 해상도 단계에서 모든 입력.

노트

[1]

운영자를위한 도메인 입력 처리와 다소 비슷합니다. 함수,이 동작은 도메인 유형을 보존 할 수 있습니다. A를 통해Union또는 유사한 구성 사용자가 모든 입력이 그 정확한 유형을 암시 적으로 또는 명시 적으로. 그렇지 않으면 도메인입니다 기본 유형이 선호됩니다.