이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 10.2. 토토 결과버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

5.2. 운영자

운영자 토토 확인

  1. pg_operator 시스템에서 정확히 일치하는지 확인하세요. 카탈로그.

    1. 이항 연산자의 인수 중 하나가 다음과 같은 경우알 수 없음입력하고 동일하다고 가정합니다. 이 검사의 다른 인수로 입력하세요. 기타 사례 관련된알 수 없음결코 찾지 못할 것입니다 이 단계에서는 일치합니다.

  2. 가장 일치하는 항목을 찾으세요.

    1. 다음에 대한 동일한 이름을 가진 모든 운영자의 목록을 만드십시오. 입력 유형이 일치하거나 일치하도록 강제될 수 있습니다. (알 수 없음리터럴은 다음과 같이 가정됩니다. 이 목적을 위해 무엇이든 강요할 수 있습니다.) 하나만 사용하세요. 그렇지 않으면 다음 단계로 진행하세요.

    2. 모든 후보를 살펴보고 다음과 같은 후보를 유지하세요. 입력 유형과 가장 정확하게 일치합니다. 모든 후보자 유지 정확히 일치하는 항목이 없는 경우. 후보가 1명뿐인 경우 남아 있으면 사용하세요. 그렇지 않으면 다음 단계로 진행하세요.

    3. 모든 후보를 살펴보고 다음과 같은 후보를 유지하세요. 입력 유형에 대한 가장 정확한 일치 또는 이진 호환 일치. 정확하거나 정확한 정보가 없는 경우 모든 후보를 유지합니다. 바이너리 호환 일치. 후보가 1명뿐인 경우 남아 있으면 사용하세요. 그렇지 않으면 다음 단계로 진행하세요.

    4. 모든 후보를 살펴보고 다음 후보를 유지하세요. 유형이 있는 대부분의 위치에서 선호 유형을 허용합니다. 강제집행이 필요할 것입니다. 후보가 없으면 모든 후보 유지 선호하는 유형을 수락합니다. 후보가 1명만 남으면 그것을 사용하십시오; 그렇지 않으면 다음 단계로 진행하세요.

    5. 입력 인수가 "알 수 없음"인 경우 유형을 확인하세요. 해당 인수 위치에서 허용되는 범주는 다음과 같습니다. 남은 후보. 각 위치에서 "문자열"을 선택하십시오. 후보자가 해당 카테고리를 수락하는 경우 카테고리(이 문자열에 대한 편향은 다음과 같이 적절합니다. 알 수 없는 유형 리터럴은 문자열처럼 보입니다. 그렇지 않으면 나머지 후보자가 모두 동의하면 동일한 유형 카테고리, 해당 카테고리를 선택하십시오. 그렇지 않으면 올바른 선택을 추론할 수 없기 때문에 실패합니다. 더 이상 단서 없이. 또한 다음 중 하나가 있는지 확인하십시오. 후보자는 선호하는 데이터 유형을 허용합니다. 선택한 카테고리. 이제 다음과 같은 연산자 후보를 삭제합니다. 선택한 유형 카테고리를 허용하지 않습니다. 더욱이, 후보자가 주어진 상황에서 선호하는 유형을 수락하는 경우 인수 위치, 수락하는 후보 삭제 해당 인수에 대해 선호되지 않는 유형입니다.

    6. 후보가 하나만 남으면 그것을 사용하십시오. 그렇지 않은 경우 후보가 있거나 둘 이상의 후보가 남아 있는 경우 실패하다.

5.2.1. 예

5.2.1.1. 지수 연산자

다음에 지수 연산자가 하나만 정의되어 있습니다. 카탈로그이며 유형의 인수를 취합니다.배정밀도. 스캐너는 이니셜을 할당합니다. 토토int4이 두 인수 모두에 쿼리 표현식:

tgl= "Exp"로 2 ^ 3을 선택합니다.
 경험치
-----
   8
(1행)
그래서 파서는 피연산자와 피연산자 모두에 대해 유형 변환을 수행합니다. 쿼리는 다음과 같습니다.
tgl= select CAST(2 AS 배정밀도) ^ CAST(3 AS 배정밀도) AS "Exp";
 경험치
-----
   8
(1행)
또는
tgl= "Exp"로 2.0 ^ 3.0을 선택합니다.
 경험치
-----
   8
(1행)

참고:이 마지막 양식은 오버헤드가 가장 적습니다. 암시적 토토을 수행하기 위해 함수가 호출되지 않기 때문에 전환. 작은 쿼리에는 문제가 되지 않지만 쿼리 성능에 영향을 미칠 수 있음 큰 테이블이 포함됩니다.

5.2.1.2. 문자열 연결

문자열 토토 작업에 문자열과 유사한 구문이 사용됩니다. 복잡한 확장 토토으로 작업하는 경우에도 마찬가지입니다. 문자열 토토이 지정되지 않은 경우 가능성 있는 연산자와 일치됩니다. 후보자.

지정되지 않은 인수 1개:

tgl= 'abc' 텍스트 선택 || 'def' AS "텍스트 및 알 수 없음";
 텍스트 및 알 수 없음
------------------
 abcdef
(1행)

이 경우 파서는 다음이 있는지 확인합니다. 교환원 복용텍스트둘 다 인수. 있기 때문에 두 번째로 가정합니다. 인수는 토토으로 해석되어야 합니다.텍스트.

지정되지 않은 토토에 대한 연결:

tgl= 'abc' 선택 || 'def' AS "지정되지 않음";
 지정되지 않음
-------------
 abcdef
(1행)

이 경우 어떤 토토을 적용할지에 대한 초기 힌트가 없습니다. 쿼리에 토토이 지정되지 않았기 때문에 사용합니다. 그래서, 파서는 모든 후보 연산자를 찾아서 거기에 있음을 찾습니다. 문자열 카테고리와 비트스트링 카테고리 입력. 문자열 카테고리가 선호되기 때문에 사용 가능한 경우 해당 카테고리가 선택되고 문자열의 "선호 토토",텍스트, 입니다 알 수 없는 리터럴을 해결하기 위해 특정 토토으로 사용됩니다. 에.

5.2.1.3. 계승

이 예는 흥미로운 결과를 보여줍니다. 전통적으로 계승 연산자는 정수에 대해 정의됩니다. 만.포스트그레스연산자 카탈로그에는 정수를 취하는 계승 항목이 하나만 있습니다. 피연산자. 정수가 아닌 숫자 인수가 주어지면,포스트그레변환을 시도할 것입니다 평가를 위해 해당 인수를 정수로 변환합니다. 계승.

tgl= 선택(4.3 !);
 ?열?
----------
       24
(1행)

참고:물론 이것은 수학적으로 의심스러운 결과는 원칙적으로 정수가 아닌 것은 정의되지 않았습니다. 그러나 a의 역할은 데이터베이스는 수학을 가르치는 것이 아니라 도구가 되는 것입니다. 데이터 조작을 위해. 사용자가 부동 소수점 숫자의 계승포스트그레부응하려고 노력할 것입니다.