이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 젠 토토 생성버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

생성 깁스

이름

토토 꽁 머니 만들기-새 토토 꽁 머니 정의

시놉시스

CREATE CAST (SourceTypeasTargetType)
    함수funcname(Argtypes)
    [과제 | 암시 적]

CAST CAST (SourceTypeasTargetType)
    기능없이
    [과제 | 암시 적으로]

설명

토토 꽁 머니 만들기새 출연진을 정의합니다. 에이 토토 꽁 머니 두 데이터 간의 변환을 수행하는 방법을 지정합니다. 유형. 예를 들어,

CAST (42 as Text); 선택

정수 상수 42를 유형으로 변환텍스트이전에 지정된 함수를 호출하여 이 사례텍스트 (int4). (적합하지 않은 경우 토토 꽁 머니가 정의되어 전환이 실패합니다.)

두 가지 유형 일 수 있습니다이진 호환, 이는 서로 변환 될 수 있음을 의미합니다"무료"기능. 이를 위해서는 해당 값이 동일하게 사용해야합니다 내부 표현. 예를 들어, 유형텍스트andvarchar이진입니다 호환.

기본적으로 토토 꽁 머니는 명시적인 토토 꽁 머니에 의해서만 호출 될 수 있습니다. 요청, 그것은 명백한 것입니다cast (xastypename)또는x::typename구성.

토토 꽁 머니가 표시된 경우과제그러면 값을 대상 데이터 유형의 열. 예를 들어, 그렇게 가정foo.f1유형의 열텍스트,

foo (f1) 값 (42);에 삽입

유형에서 토토 꽁 머니가 허용됩니다정수to Type텍스트표시과제, 그렇지 않으면. (우리 일반적으로 용어 사용과제 캐스트이런 종류의 캐스트를 설명하려면)

토토 꽁 머니가 표시된 경우암시 적그러면 어떤 상황에서도 암시 적으로 호출 될 수 있습니다. 할당 또는 내부적으로 표현식. 예를 들어, 이후||테이크텍스트오페란트,

'시간은'||를 선택합니다 지금();

유형에서 토토 꽁 머니가있는 경우에만 허용됩니다타임 스탬프to텍스트표시암시 적. 그렇지 않으면 그럴 것입니다 예를 들어 토토 꽁 머니를 명시 적으로 작성해야합니다.

'시간은'||를 선택합니다 cast (now ()로 텍스트로);

(우리는 일반적으로 용어를 사용암시 적 깁스이런 종류의 캐스트를 설명하려면)

캐스트를 암시 적으로 표시하는 것에 대해 보수적 인 것이 현명합니다. 암시 적 주조 경로의 과잉이 유발할 수 있습니다PostgreSQL놀라운 선택 명령 해석 또는 명령을 해결할 수 없도록 여러 가지 가능한 해석이 있기 때문에 전혀 없습니다. 에이 좋은 경험의 규칙 정보를 예방하는 유형 간의 변환 동일한 일반 유형 범주. 예를 들어, 캐스트int2toint4합리적으로 할 수 있습니다 암시 적이지만의 캐스트float8toint4아마도 과제 전용이어야합니다. 과 같은 크로스 유형 카테고리 캐스트텍스트toint4, 명시 적 전용이 가장 좋습니다.

캐스트를 만들 수 있으려면 출처 또는 대상 데이터 유형. 이진 호환 캐스트를 만들려면해야합니다 슈퍼 유행자. (이 제한은 잘못 되었기 때문에 이루어집니다 이진 호환 캐스트 변환은 쉽게 충돌 할 수 있습니다 섬기는 사람.)

매개 변수

SourceType

캐스트의 소스 데이터 유형의 이름.

TargetType

캐스트의 대상 데이터 유형의 이름.

funcname(Argtypes)

캐스트를 수행하는 데 사용되는 함수. 함수 이름 스키마 자격이있을 수 있습니다. 그렇지 않은 경우 기능이 있습니다 스키마 검색 경로에서 찾았습니다. 함수의 결과 데이터 유형은 캐스트의 대상 유형과 일치해야합니다. 그것은 논쟁은 아래에 설명되어 있습니다.

함수 없음

소스 유형과 대상 유형이 바이너리 호환성이 있으므로 수행 할 기능이 필요하지 않습니다 토토 꽁 머니.

과제

캐스트가 암시 적으로 호출 될 수 있음을 나타냅니다 과제 컨텍스트.

암시 적

캐스트가 암시 적으로 호출 될 수 있음을 나타냅니다. 문맥.

토토 꽁 머니 구현 함수에는 1 ~ 3 개의 인수가있을 수 있습니다. 첫 번째 인수 유형은 토토 꽁 머니의 출처와 동일해야합니다. 유형. 두 번째 인수는 존재하는 경우 유형이어야합니다Integer; 연관된 유형 수정자를 수신합니다 목적지 유형 또는-1IF 아무것도 없습니다. 세 번째 인수는 존재하는 경우 유형이어야합니다부울; 수신true토토 꽁 머니가 명시적인 토토 꽁 머니 인 경우거짓그렇지 않으면. (기괴하게, SQL 사양은 요구됩니다 명시적이고 암시적인 토토 꽁 머니에 대한 다른 행동 케이스. 이 주장은해야 할 기능에 대해 제공됩니다 그러한 토토 꽁 머니를 구현하십시오. 당신이 당신을 디자인하는 것이 좋습니다 자체 데이터 유형이 중요합니다.)

일반적으로 캐스트는 다른 소스와 대상 데이터가 있어야합니다. 유형. 그러나 동일한 캐스트를 선언 할 수 있습니다. 출처 구현 기능이있는 경우 소스 및 대상 유형 하나 이상의 논쟁으로. 이것은 대표하는 데 사용됩니다 시스템 카탈로그에서 유형 별 길이 강요 기능. 명명 된 함수는 유형의 값을 두 번째 인수에 의해 주어진 수정 자 값을 입력하십시오. (이후 문법은 현재 특정 내장 데이터 유형 만 허용합니다 유형 수정자가 있으며이 기능은 사용자 정의에 사용되지 않습니다. 대상 유형이지만 완전성에 대해 언급합니다.)

토토 꽁 머니가 다른 소스와 대상 유형과 하나 이상의 인수를 취하는 함수는 나타납니다 한 유형에서 다른 유형으로 변환하고 길이를 적용합니다. 한 단계에서 강요. 그러한 항목이 없으면 유형 수정자를 사용하는 유형에 대한 강요에는 두 단계가 포함됩니다. 하나는 데이터 유형 사이에서 변환하고 1 초를 적용 할 수 있습니다. 수정 자.

노트

usePostgreSQL : 문서 : 8.2 : 드롭 사설 토토 사이트to 사용자 정의 캐스트 제거.

유형을 변환 할 수 있다면 두 가지를 기억하십시오. 두 가지 방법을 명시 적으로 선언 해야하는 방법.

이전PostgreSQL7.3, 데이터 유형과 동일한 이름을 가진 모든 기능이 반환되었습니다. 해당 데이터 유형, 다른 유형의 한 가지 주장을 취했습니다. 자동으로 캐스트 함수. 이 협약은 포기되었습니다 스키마의 도입에 직면하여 시스템 카탈로그에서 이진 호환 캐스트를 나타냅니다. 그만큼 내장 된 캐스트 기능은 여전히이 이름 지정 체계를 따르지만 시스템 카탈로그에서 캐스트로 표시되어야합니다PG_CAST

필요하지는 않지만 계속해서 캐스트 구현 이름 지정 의이 오래된 협약을 따르십시오 대상 데이터 유형 다음에 기능합니다. 많은 사용자가 익숙합니다 기능 스타일 표기법을 사용하여 데이터 유형을 캐스트 할 수 있습니다. 그게typename(x). 이 표기법은 사실 더 이상 아무것도 아닙니다 캐스트 구현 기능의 호출보다 적지도 않습니다. 그것은 특별히 캐스트로 취급되지 않았습니다. 전환 기능이있는 경우 이 컨벤션을 지원하도록 지명되지 않았다면 당신은 놀라게 될 것입니다 사용자. 부터PostgreSQL허용 인수가 다른 동일한 함수 이름의 과부하 유형, 다중 변환에 어려움이 없습니다 모두 대상 유형을 사용하는 다른 유형의 기능 이름.

참고 :이전에는 하나의 작은 거짓말이 있습니다 단락 : 여전히 하나의 사례가 있습니다pg_cast의미를 해결하는 데 사용됩니다 명백한 기능 호출의. 함수 호출 인 경우이름(x) 실제 기능과 일치하지 않지만이름데이터 유형의 이름이며PG_CAST이진 호환을 보여줍니다 유형 에서이 유형으로 캐스트x, 호출은 다음과 같이 해석됩니다 명백한 캐스트. 이 예외는 그렇게 만들어집니다 이진 호환 캐스트는 기능을 사용하여 호출 할 수 있습니다 성능이 부족하더라도 구문.

예제

유형에서 토토 꽁 머니를 만들려면텍스트to Typeint4함수 사용int4 (텍스트):

함수 int4 (text);가있는 CAST (텍스트 AS int4)를 만듭니다.

(이 토토 꽁 머니는 이미 시스템에서 사전 정의되어 있습니다.)

호환성

the토토 꽁 머니 만들기명령을 준수합니다 그만큼SQL표준을 제외하고 SQL은 이진 호환 유형 또는 추가에 대한 조항을 작성하지 않습니다 구현 기능에 대한 인수.AS 절대적인isPostgreSQL확장도.