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

10.5. Union, case및 관련 구성

SQLUnion구조물은 단일 결과 세트가 되려면 다른 유형을 일치시켜야합니다. 해상도 알고리즘은 Union 쿼리의 각 출력 열에 별도로 적용됩니다. 그만큼교차and제외Constructs는와 같은 방식으로 다른 토토 캔을 해결합니다Union. 를 포함한 일부 다른 구조물CASE, 배열, 가장 큰and최소함수, 동일한 알고리즘을 사용하여 구성 요소 표현식을 일치시키고 결과 데이터 토토 캔을 선택합니다.

해상도 토토 캔Union, CASE및 관련 구성

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

  2. 입력이 도메인 토토 캔 인 경우 모든 후속 단계에 대해 도메인의 기본 토토 캔으로 취급하십시오.[11]

  3. 모든 입력이 토토 캔 인 경우알 수없는, 토토 캔으로 해결텍스트(문자열 범주의 선호하는 토토 캔). 그렇지 않으면,알 수없는나머지 규칙의 목적 상 입력이 무시됩니다.

  4. 비 unknown 입력이 모두 동일한 토토 캔 범주가 아닌 경우 실패합니다.

  5. 첫 번째 비 unknown 입력 토토 캔을 후보 토토 캔으로 선택한 다음 서로를 고려하지 않은 입력 토토 캔, 왼쪽에서 오른쪽으로 고려하십시오.[12]후보 토토 캔을 다른 토토 캔으로 암시 적으로 변환 할 수 있지만 그 반대가 아닌 경우 다른 토토 캔을 새 후보 토토 캔으로 선택하십시오. 그런 다음 나머지 입력을 계속 고려하십시오. 이 프로세스의 어느 단계에서 선호하는 토토 캔이 선택된 경우 추가 입력을 고려하여 중지하십시오.

  6. 모든 입력을 최종 후보 토토 캔으로 변환합니다. 주어진 입력 토토 캔에서 후보 토토 캔으로 암시 적 변환이없는 경우 실패.

일부 예제가 따릅니다.

예 10.10. Union에서 지정된 유형을 사용한 유형 해상도

텍스트를 선택한 'a as'text "Union Select 'b';

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

여기, 알 수없는 유형의 리터럴'b'토토 캔으로 해결됩니다텍스트.


예 10.11. 간단한 조합에서 토토 캔 해상도

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

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

문자 그럴1.2is type숫자Integer​​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 유형 텍스트와 정수는 일치 할 수 없습니다

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

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

내부Union방출 토토 캔으로 해결되었습니다텍스트, 위에 주어진 규칙에 따라. 그런 다음 외부Union토토 캔의 입력이 있습니다텍스트and정수, 관찰 된 오류가 발생합니다. 가장 왼쪽을 확인하여 문제를 해결할 수 있습니다Union원하는 결과 토토 캔의 입력이 하나 이상 있습니다.

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




[11]연산자 및 함수에 대한 도메인 입력 처리와 다소,이 동작은 도메인 토토 캔을 a를 통해 보존 할 수 있습니다.Union또는 유사한 구성, 사용자가 모든 입력이 해당 정확한 토토 캔을 암시 적으로 또는 명시 적으로 보장하기 위해주의를 기울이는 한. 그렇지 않으면 도메인의 기본 토토 캔이 사용됩니다.

[12]역사적 이유로CASE대접else조항 (있는 경우)첫 번째입력,the그 후 고려 된 조항. 다른 모든 경우왼쪽에서 오른쪽쿼리 텍스트에 표현식이 나타나는 순서를 의미합니다.