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

만들기 깁스

이름

CREATE CAST -- 새 스포츠 토토 결과 정의

시놉시스

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

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

설명

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

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

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

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

기본적으로 스포츠 토토 결과는 명시적 스포츠 토토 결과에 의해서만 호출될 수 있습니다. 요청은 명시적입니다.스포츠 토토 결과(xAS유형이름)또는x::유형이름구조물.

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

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

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

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

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

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

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

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

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

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

매개변수

소스 유형

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

대상 유형

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

기능 이름(argtypes)

캐스트를 수행하는 데 사용되는 함수입니다. 함수 이름 스키마에 적합할 수 있습니다. 그렇지 않은 경우 해당 기능은 다음과 같습니다. 스키마 검색 경로에서 조회했습니다. 함수의 결과 데이터 유형은 캐스트의 대상 유형과 일치해야 합니다. 그것은 인수는 아래에서 논의됩니다.

기능 없음

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

할당으로

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

암시적으로

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

Cast 구현 함수는 1~3개의 인수를 가질 수 있습니다. 첫 번째 인수 유형은 스포츠 토토 결과의 소스와 동일해야 합니다. 유형. 두 번째 인수가 있는 경우 유형이어야 합니다.정수; 연관된 유형 수정자를 수신합니다. 대상 유형으로, 또는-1만일 아무것도 없습니다. 세 번째 인수가 있는 경우 유형이어야 합니다.부울; 그것은 받는다스포츠 토토 결과가 명시적 스포츠 토토 결과인 경우,거짓그렇지 않으면. (이상하게도 SQL 사양에서는 일부에서는 명시적 및 암시적 캐스트에 대한 서로 다른 동작 사례. 이 인수는 다음을 수행해야 하는 함수에 제공됩니다. 그러한 캐스트를 구현하십시오. 디자인하는 것은 권장하지 않습니다. 이것이 중요하므로 자체 데이터 유형을 사용하세요.)

일반적으로 캐스트에는 소스와 대상 데이터가 달라야 합니다 유형. 그러나 동일한 캐스트를 선언하는 것은 허용됩니다. 캐스트 구현 기능이 있는 경우 소스 및 대상 유형 하나 이상의 인수로. 이는 다음을 나타내는 데 사용됩니다. 시스템 카탈로그의 유형별 길이 강제 함수. 명명된 함수는 해당 유형의 값을 강제로 변환하는 데 사용됩니다. 두 번째 인수로 제공되는 유형 수정자 값입니다. (이후 문법은 현재 특정 내장 데이터 유형만 허용합니다. 유형 수정자가 있으므로 이 기능은 사용자 정의에는 사용되지 않습니다. 대상 유형이지만 완전성을 위해 언급합니다.)

캐스트에 소스와 대상 유형이 다르고 둘 이상의 인수를 취하는 함수는 다음을 나타냅니다. 한 유형에서 다른 유형으로 변환하고 길이를 적용 한 단계의 강제. 그러한 항목을 사용할 수 없는 경우, 유형 수정자를 사용하는 유형으로의 강제 변환에는 두 단계가 포함됩니다. 하나는 데이터 유형 간 변환을 위한 것이고, 다른 하나는 수정자.

참고

사용PostgreSQL :에 사용자 정의 캐스트를 제거합니다.

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

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

필수는 아니지만 계속해서 수행하는 것이 좋습니다. 캐스트 구현을 명명하는 이 오래된 규칙을 따르십시오. 대상 데이터 유형 이후에 작동합니다. 많은 사용자들이 익숙합니다. 함수 스타일 표기법을 사용하여 데이터 유형을 캐스팅할 수 있습니다. 즉유형이름(x). 이 표기법은 사실 더 이상 아무것도 아닙니다. 캐스트 구현 함수를 호출하는 것 이상입니다. 그것은 특별히 캐스트로 취급되지 않습니다. 변환 기능이 다음과 같은 경우 이 협약을 지지하도록 지명되지 않았다면 당신은 놀랄 것입니다 사용자. 부터포스트그레SQL허용합니다 다른 인수로 동일한 함수 이름을 오버로드함 유형이므로 다중 변환에 어려움이 없습니다. 모두 대상 유형을 사용하는 다양한 유형의 함수 이름.

참고:앞의 내용에는 작은 거짓말이 하나 있습니다. 단락: 아직 한 가지 경우가 있습니다.pg_cast의미를 해결하는 데 사용됩니다. 명백한 함수 호출. 함수 호출인 경우이름(x) 실제 기능과 일치하지 않지만이름은 데이터 유형의 이름이고pg_cast바이너리 호환 표시 유형에서 이 유형으로 캐스팅됩니다.x, 호출은 다음과 같이 해석됩니다. 명시적인 캐스트. 이 예외는 다음과 같이 만들어졌습니다. 바이너리 호환 캐스트는 함수형을 사용하여 호출할 수 있습니다. 기능이 부족하더라도 구문입니다.

유형에서 스포츠 토토 결과를 생성하려면텍스트입력하려면int4함수 사용int4(텍스트):

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

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

호환성

스포츠 토토 결과 만들기명령은 다음을 준수합니다 SQL:1999(단, SQL:1999는 다음에 대한 조항을 만들지 않습니다.) 바이너리 호환 유형 또는 구현에 대한 추가 인수 기능.암시적으로PostgreSQL확장자도 마찬가지입니다.