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

10.2. 운영자

연산자가 참조하는 특정 연산자 발현은 다음 절차를 사용하여 결정됩니다. 참고하세요 이 절차는 다음의 우선순위에 의해 간접적으로 영향을 받습니다. 관련 연산자가 무엇인지 결정하므로 하위 표현식은 어떤 연산자의 입력으로 간주됩니다. 참조섹션 4.1.6더 많은 정보를 원하시면.

운영자 유형 확인

  1. 다음에서 고려할 연산자를 선택하세요.pg_operator시스템 카탈로그. 스키마에 한정되지 않은 연산자 이름이 사용된 경우(일반적인 경우) 고려되는 연산자는 일치하는 연산자입니다. 현재에 표시되는 이름 및 인수 수 검색 경로(참조섹션 5.7.3). 만약에 자격을 갖춘 운영자 이름이 제공되었습니다. 지정된 스키마가 고려됩니다.

    1. 검색 경로가 다음과 같은 여러 연산자를 찾는 경우 동일한 인수 유형, 하나만 나타남 경로의 가장 빠른 것으로 간주됩니다. 연산자 서로 다른 인수 유형은 동일하게 간주됩니다. 검색 경로 위치에 상관없이 바닥글.

  2. 스포츠 토토 결과가 입력을 정확하게 받아들이는지 확인하세요 인수 유형. 존재하는 경우(정확한 항목은 하나만 있을 수 있음) 고려된 스포츠 토토 결과 집합과 일치하는 경우) 이를 사용하세요.

    1. 이진 스포츠 토토 결과 호출의 인수 중 하나가 의알 수 없음입력하고 가정하세요 이에 대한 다른 인수와 동일한 유형입니다. 확인하세요. 두 가지를 포함하는 호출알 수 없음입력 또는 단항 스포츠 토토 결과(알 수 없음입력하면 절대 찾을 수 없습니다 이 단계에서 일치합니다.

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

    1. 입력된 후보 스포츠 토토 결과를 폐기합니다. 유형이 일치하지 않아 변환할 수 없습니다( 암시적 변환)을 일치시킵니다.알 수 없음리터럴은 다음과 같이 가정됩니다. 이 목적을 위해 무엇이든 변환 가능합니다. 하나만 있으면 후보가 남아 있으면 사용하십시오. 그렇지 않으면 다음으로 계속 단계.

    2. 모든 후보를 살펴보고 다음과 같은 후보를 유지하세요. 입력 유형과 가장 정확하게 일치합니다. (도메인은 이에 대한 기본 유형과 동일한 것으로 간주됩니다. 목적.) 정확한 내용이 없는 경우 모든 후보자를 유지합니다. 일치합니다. 후보가 하나만 남아 있으면 해당 후보를 사용하십시오. 그렇지 않으면 다음 단계를 계속하세요.

    3. 모든 후보를 살펴보고 해당 후보를 유지하세요. (입력 데이터 유형의 유형 중) 선호하는 유형을 허용합니다. 카테고리) 유형 변환이 가장 많은 위치에 있음 요구될 것입니다. 수락하는 후보자가 없으면 모든 후보자를 유지합니다. 선호하는 유형. 후보가 하나만 남아 있으면 해당 후보를 사용합니다. 그렇지 않으면 다음 단계로 진행하세요.

    4. 입력 인수가 다음과 같은 경우알 수 없음, 허용되는 유형 카테고리를 확인하세요. 나머지 인수에 의한 해당 인수 위치에서 후보자. 각 위치에서 다음을 선택합니다.문자열후보자가 수락하는 경우 카테고리 그 카테고리. (문자열에 대한 이러한 편견은 적절합니다. 알 수 없는 유형의 리터럴은 문자열처럼 보이기 때문입니다.) 그렇지 않으면 나머지 후보자가 모두 동의하면 동일한 유형 카테고리, 해당 카테고리를 선택하십시오. 그렇지 않으면 올바른 선택을 추론할 수 없기 때문에 실패합니다. 더 이상 단서 없이. 이제 그렇지 않은 후보자를 폐기하십시오. 선택한 유형 카테고리를 수락합니다. 게다가 만약 있다면 후보자는 해당 카테고리에서 선호하는 유형을 수락합니다. 선호하지 않는 유형을 허용하는 후보를 삭제합니다. 그 주장.

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

몇 가지 예가 이어집니다.

예제 10-1. 계승 스포츠 토토 결과 유형 해결

계승 스포츠 토토 결과는 하나만 있습니다(접미사!)은 표준 카탈로그에 정의되어 있으며, 유형의 인수비긴트. 스캐너 초기 유형을 할당합니다.정수에 이 쿼리 표현식의 인수:

선택 40 ! AS "40 계승";

                   40 계승
-------------------------------------
 815915283247897734345611269596115894272000000000
(1행)

그래서 파서는 피연산자에 대해 유형 변환을 수행하고 쿼리는 다음과 같습니다:

캐스트 선택(40 AS bigint) ! AS "40 계승";

예제 10-2. 문자열 연결 연산자 유형 해결

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

하나의 지정되지 않은 인수가 있는 예:

텍스트 'abc' 선택 || 'def' AS "텍스트 및 알 수 없음";

 텍스트가 있고 알 수 없음
------------------
 abcdef
(1행)

이 경우 파서는 스포츠 토토 결과가 있는지 확인합니다. 복용텍스트두 인수 모두에 대해. 이후 두 번째 인수는 다음과 같아야 한다고 가정합니다. 유형으로 해석됨텍스트.

다음은 지정되지 않은 유형에 대한 연결입니다:

'abc' 선택 || 'def' AS "지정되지 않음";

 불특정
-------------
 abcdef
(1행)

이 경우 사용할 유형에 대한 초기 힌트가 없습니다. 쿼리에 유형이 지정되지 않았기 때문입니다. 그래서 파서는 다음과 같이 보입니다. 모든 후보 연산자에 대해 후보가 있음을 찾습니다. 문자열 범주 및 비트 문자열 범주 입력을 모두 허용합니다. 가능한 경우 문자열 카테고리가 선호되므로 카테고리를 선택한 다음 선호하는 문자열 유형을 선택합니다.텍스트는 특정 유형으로 사용됩니다. 알 수 없는 리터럴을 다음과 같이 해결합니다.

예제 10-3. 절대값과 부정 운영자 유형 확인

PostgreSQL스포츠 토토 결과 카탈로그에는 접두사 스포츠 토토 결과에 대한 여러 항목이 있습니다.@, 모두 절대값을 구현합니다. 다양한 숫자 데이터 유형에 대한 연산. 이 항목 중 하나 유형에 해당합니다.float8, 이는 숫자 카테고리에서 선호되는 유형입니다. 그러므로포스트그레SQL직면했을 때 해당 항목을 사용합니다 와 함께알 수 없음입력:

SELECT @ '-4.5' AS "abs";
 복근
-----
 4.5
(1행)

여기서 시스템은 알 수 없는 유형을 암시적으로 해결했습니다. 유형으로서의 리터럴float8신청하기 전에 선택한 스포츠 토토 결과입니다. 우리는 그것을 확인할 수 있습니다float8그리고 다른 유형은 사용되지 않았습니다:

SELECT @ '-4.5e500' AS "abs";

오류: "-4.5e500"이 배정밀도 유형의 범위를 벗어났습니다.

반면에 접두사 스포츠 토토 결과~(비트 부정)은 정수에 대해서만 정의됩니다. 데이터 유형이 아닙니다.float8. 그래서 우리가 노력한다면 비슷한 경우~, 우리는 다음을 얻습니다:

SELECT ~ '20' AS "부정";

오류: 연산자가 고유하지 않습니다. ~ "알 수 없음"
힌트: 가장 적합한 후보 연산자를 선택할 수 없습니다. 추가해야 할 수도 있습니다.
명시적인 유형 캐스팅.

이는 시스템이 다음 중 어느 것을 결정할 수 없기 때문에 발생합니다. 여러 개 가능~연산자는 다음과 같아야 합니다. 선호됩니다. 명시적인 캐스트를 통해 도움을 드릴 수 있습니다.

SELECT ~ CAST('20' AS int8) AS "부정";

 부정
----------
      -21
(1행)