SQLUnion구조물이 일치해야합니다
아마도 단일 결과 세트가 될 수있는 유형이 다릅니다. 그만큼
해상도 알고리즘은 각 출력 열에 별도로 적용됩니다.
노조 쿼리. 그만큼Intersect및제외Constructs Resolve OSSIMOR 유형
와 같은 방식으로Union. 그만큼CASE, 배열, 값, 가장 큰
and최소
CORPORTS는 동일한 것을 사용합니다
구성 요소 표현식을 일치시키고 선택하는 알고리즘
결과 데이터 유형.
해상도 유형Union, CASE및 관련 구성
모든 입력이 같은 유형 인 경우알 수없는, 해당 유형으로 해결.
입력이 도메인 유형 인 경우 모든 후속 단계에 대한 도메인의 기본 유형.[1]
모든 입력이 유형 인 경우알 수없는, 해결 as type텍스트(선호하는 유형의 문자열 카테고리). 그렇지 않으면,알 수없는입력 무시됩니다.
비 unknown 입력이 모두 동일한 유형 범주가 아닌 경우 실패하다.
선호하는 첫 번째 비 unknown 입력 유형을 선택하십시오. 해당 범주를 입력하십시오.
그렇지 않으면 허용하는 마지막 이외의 입력 유형을 선택하십시오 암시 적으로 변환 될 모든 이전의 비 unknown 입력은 그것. (적어도 첫 번째 유형은 목록은이 조건을 충족해야합니다.)
모든 입력을 선택한 유형으로 변환합니다. 없으면 실패 주어진 입력에서 선택한 유형으로 변환.
일부 예제가 따릅니다.
예 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또는 유사한 구성 사용자가 모든 입력이 그 정확한 유형을 암시 적으로 또는 명시 적으로. 그렇지 않으면 도메인입니다 기본 유형이 선호됩니다. |