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

만들기 토토 베이

이름

CREATE CAST -- 새 토토 베이 정의

시놉시스

토토 베이 생성(소스 유형AS대상 유형)
    기능 포함기능 이름 (argtype)
    [ 과제로 | 묵시적으로 ]

토토 베이 만들기(소스 유형AS대상 유형)
    기능 없음
    [ 과제로 | 묵시적으로 ]

설명

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

캐스트 선택(42 AS 텍스트);

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

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

기본적으로 토토 베이는 명시적 토토 베이에 의해서만 호출될 수 있습니다. 요청은 명시적입니다.토토 베이(xAS유형이름), x::유형이름또는유형이름(x) 구성합니다.

토토 베이가 표시된 경우AS 할당그러면 값을 할당할 때 암시적으로 호출될 수 있습니다. 대상 데이터 유형의 열입니다. 예를 들어, 다음과 같이 가정합니다.foo.f1유형의 열입니다.텍스트그러면

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

유형에서 토토 베이하는 경우 허용됩니다.정수입력하려면텍스트표시됨할당으로, 그렇지 않으면 그렇지 않습니다. (우리는 일반적으로 용어를 사용합니다과제 토토 베이이런 종류의 캐스트를 설명합니다.)

토토 베이가 표시된 경우암시적으로그러면 어떤 상황에서든 암시적으로 호출될 수 있습니다. 할당 또는 표현식 내부적으로. 예를 들어, 이후||걸림텍스트피연산자,

SELECT '시간은 ' || 지금();

유형의 토토 베이인 경우에만 허용됩니다.타임스탬프텍스트표시됨암시적으로. 그렇지 않으면 그럴 것이다. 예를 들어 토토 베이를 명시적으로 작성하는 데 필요합니다.

SELECT '시간은 ' || CAST(now() AS 텍스트);

(우리는 일반적으로 용어를 사용합니다.암시적 토토 베이이런 종류의 캐스트를 설명합니다.)

캐스트를 암시적으로 표시하는 것에 대해 보수적인 것이 현명합니다. 암시적 캐스팅 경로가 너무 많으면 다음이 발생할 수 있습니다.PostgreSQL놀라움을 선택하다 명령을 해석하지 못하거나 명령을 해석할 수 없는 경우 다양한 해석이 가능하기 때문입니다. 에이 경험상 좋은 법칙은 캐스트를 암시적으로만 호출 가능하게 만드는 것입니다. 유형 간 정보 보존 변환을 위해 동일한 일반 유형 카테고리. 예를 들어,int2int4합리적으로 그럴 수 있습니다 암시적이지만 토토 베이는float8int4아마도 할당 전용이어야 합니다. 다음과 같은 교차 유형 카테고리 캐스트텍스트int4, 명시적 전용으로 만드는 것이 가장 좋습니다.

캐스트를 생성하려면 소스 또는 대상 데이터 유형. 바이너리 호환 캐스트를 생성하려면 다음을 수행해야 합니다. 슈퍼유저. (이러한 제한은 잘못된 바이너리 호환 캐스트 변환은 쉽게 충돌할 수 있습니다. 서버.)

매개변수

소스 유형

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

대상 유형

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

기능 이름(argtype)

캐스트를 수행하는 데 사용되는 함수입니다. 함수 이름 스키마에 적합할 수 있습니다. 그렇지 않은 경우 해당 기능은 다음과 같습니다. 길을 올려다보았다. 인수 유형은 동일해야 합니다. 소스 유형에 대해서는 결과 데이터 유형이 일치해야 합니다. 캐스트의 대상 유형입니다.

기능 없음

소스 유형과 대상 유형이 다음과 같음을 나타냅니다. 바이너리 호환 가능하므로 수행하는 데 기능이 필요하지 않습니다. 출연진.

할당으로

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

암시적으로

캐스트가 모든 항목에서 암시적으로 호출될 수 있음을 나타냅니다. 맥락.

참고

사용드롭 토토 베이사용자 정의를 제거하려면 캐스트.

두 유형을 모두 변환할 수 있기를 원한다면 기억하세요 두 가지 방법으로 명시적으로 토토 베이를 선언해야 합니다.

이전PostgreSQL7.3, 데이터 유형과 이름이 같은 모든 함수가 반환됨 해당 데이터 유형을 사용하고 다른 유형의 인수 하나를 취했습니다. 자동으로 캐스트 기능을 수행합니다. 이 컨벤션은 폐기되었습니다 스키마 도입에 직면하여 다음을 수행할 수 있습니다. 시스템 카탈로그에서 바이너리 호환 캐스트를 나타냅니다. ( 내장 형변환 함수는 여전히 이 이름 지정 체계를 따르지만 시스템 카탈로그에 캐스트로 표시되어야 합니다.pg_cast지금.)

유형에서 형변환을 생성하려면텍스트입력하려면int4함수 사용int4(텍스트):

함수 int4(text)를 사용하여 CAST(text AS int4) 생성;

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

호환성

토토 베이 만들기명령은 다음을 준수합니다 SQL99(단, SQL99는 다음 사항을 제공하지 않음) 바이너리 호환 유형.암시적으로이다 에PostgreSQL확장 프로그램도 마찬가지입니다.