CREATE CAST (SourceTypeasTargetType) 함수funcName(Argtype) [과제 | 암시 적] CAST CAST (sourceTypeasTargetType) 기능없이 [과제 | 암시 적으로]
토토 베이 만들기새 출연진을 정의합니다. 에이 토토 베이 두 데이터 간의 변환을 수행하는 방법을 지정합니다. 유형. 예를 들어,
CAST (42 as Text); 선택
정수 상수 42를 유형으로 변환텍스트이전에 지정된 함수를 호출하여 이 사례텍스트 (int4). (적합하지 않은 경우 토토 베이가 정의되어 전환이 실패합니다.)
두 가지 유형 일 수 있습니다이진 호환, 이는 서로 변환 될 수 있음을 의미합니다"무료"기능. 이를 위해서는 해당 값이 동일하게 사용해야합니다 내부 표현. 예를 들어, 유형텍스트및varchar이진입니다 호환.
기본적으로 토토 베이는 명시적인 토토 베이에 의해서만 호출 될 수 있습니다. 요청, 그것은 명백한 것입니다cast (xastypename), x::typename또는typename(x) 건설하다.
토토 베이가 표시된 경우과제그러면 값을 대상 데이터 유형의 열. 예를 들어, 그렇게 가정foo.f1유형의 열텍스트,
foo (f1) 값 (42)에 삽입;
유형에서 토토 베이가 허용됩니다정수to type텍스트표시과제, 그렇지 않으면. (우리 일반적으로 용어 사용과제 캐스트이런 종류의 캐스트를 설명하려면)
토토 베이가 표시된 경우암시 적그러면 어떤 맥락에서도 암시 적으로 호출 될 수 있습니다. 할당 또는 내부적으로 표현식. 예를 들어, 이후||테이크텍스트오페란트,
'시간은'||를 선택합니다 지금();
유형에서 토토 베이가있는 경우에만 허용됩니다타임 스탬프to텍스트표시암시 적. 그렇지 않으면 그럴 것입니다 예를 들어 토토 베이를 명시 적으로 작성해야합니다.
'시간은'||를 선택합니다 cast (now ()로 텍스트로);
(우리는 일반적으로 용어를 사용합니다암시 적 깁스이런 종류의 캐스트를 설명하려면)
캐스트를 암시 적으로 표시하는 것에 대해 보수적 인 것이 현명합니다. 암시 적 주조 경로의 과잉이 유발할 수 있습니다PostgreSQL놀라운 선택 명령 해석 또는 명령을 해결할 수 없도록 여러 가지 가능한 해석이 있기 때문에 전혀 없습니다. 에이 좋은 경험의 규칙 정보를 예방하는 유형 간의 변환 동일한 일반 유형 범주. 예를 들어, 캐스트int2toint4합리적으로 할 수 있습니다 암시 적이지만의 캐스트float8toint4아마도 과제 전용이어야합니다. 과 같은 크로스 유형 카테고리 캐스트텍스트toint4, 명시 적 전용이 가장 좋습니다.
캐스트를 만들 수 있으려면 출처 또는 대상 데이터 유형. 이진 호환 캐스트를 만들려면해야합니다 슈퍼 유행자. (이 제한은 잘못 되었기 때문에 이루어집니다 이진 호환 캐스트 변환은 쉽게 충돌 할 수 있습니다 섬기는 사람.)
캐스트의 소스 데이터 유형의 이름.
캐스트의 대상 데이터 유형의 이름.
캐스트를 수행하는 데 사용되는 함수. 함수 이름 스키마 자격이있을 수 있습니다. 그렇지 않은 경우 기능이 있습니다 길을 찾았습니다. 인수 유형은 동일해야합니다 소스 유형에 결과 데이터 유형이 일치해야합니다. 캐스트의 대상 유형.
소스 유형과 대상 유형이 바이너리 호환성이 있으므로 수행 할 기능이 필요하지 않습니다 토토 베이.
캐스트가 암시 적으로 호출 될 수 있음을 나타냅니다 과제 컨텍스트.
캐스트가 암시 적으로 호출 될 수 있음을 나타냅니다. 문맥.
use드롭 토토 베이사용자 정의를 제거합니다 토토 베이.
유형을 변환 할 수 있다면 두 가지를 기억하십시오. 두 가지 방법을 명시 적으로 선언 해야하는 방법.
이전PostgreSQL7.3, 데이터 유형과 동일한 이름을 가진 모든 기능이 반환되었습니다. 해당 데이터 유형, 다른 유형의 한 가지 주장을 취했습니다. 자동으로 캐스트 함수. 이 협약은 포기되었습니다 스키마의 도입에 직면하여 시스템 카탈로그에서 이진 호환 캐스트를 나타냅니다. (그만큼 내장 된 캐스트 기능은 여전히이 이름 지정 체계를 따르지만 시스템 카탈로그에서 캐스트로 표시되어야합니다pg_castnow.)
유형에서 토토 베이를 만들려면텍스트to Typeint4함수 사용int4 (텍스트):
함수 int4 (text);로 캐스트 (텍스트 AS int4)를 만듭니다.
(이 토토 베이는 이미 시스템에서 사전 정의되어 있습니다.)