CREATE CAST (source_typeastarget_type) 함수function_name(argument_type[, ...]) [과제 | 암시 적] CAST CAST (source_typeastarget_type) 기능없이 [과제 | 암시 적] CAST CAST (source_typeastarget_type) Inout과 함께 [과제 | 암시 적으로]
토토 꽁 머니 만들기새 출연진을 정의합니다. 토토 꽁 머니 두 데이터 유형 사이의 변환을 수행하는 방법을 지정합니다. 을 위한 예,
CAST (42 AS float8); 선택
정수 상수 42를 유형으로 변환float8이전에 지정된 기능을 호출하여 이 사례float8 (int4). (적합하지 않은 경우 토토 꽁 머니가 정의되어 전환이 실패합니다.)
두 가지 유형이 될 수 있습니다이진 강압, 이는 변환이 수행 될 수 있음을 의미합니다"무료"함수를 호출하지 않고. 이것 해당 값이 동일한 내부를 사용해야합니다 대표. 예를 들어, 유형텍스트andvarchar이진은 두 가지 방법으로 강요 할 수 있습니다. 이진 강압은 반드시 대칭 관계는 아닙니다. 예를 들어, 토토 꽁 머니11852_11857to텍스트현재에서 무료로 수행 할 수 있습니다 구현이지만 역 방향에는 기능이 필요합니다 최소한 구문 검사를 수행합니다. (이진 인 두 가지 유형 두 가지 방법 모두 이진 호환이라고도합니다.)
토토 꽁 머니를 A로 정의 할 수 있습니다I/O 변환 깁스사용하여inout구문. I/O 변환 토토 꽁 머니는 출력 기능을 호출하여 수행됩니다. 소스 데이터 유형의 및 결과 문자열을 대상 데이터 유형의 입력 기능. 많은 일반적인 경우에, 이것 기능은 별도의 토토 꽁 머니 기능을 작성할 필요가 없습니다. 변환. I/O 변환 토토 꽁 머니는 일반과 동일하게 행동합니다. 기능 기반 토토 꽁 머니; 구현 만 다릅니다.
기본적으로 토토 꽁 머니는 명시적인 토토 꽁 머니에 의해서만 호출 될 수 있습니다. 요청, 그것은 명백한 것입니다cast (xastypename)또는x::typename구성.
토토 꽁 머니가 표시된 경우과제값을 대상 데이터 유형의 열. 예를 들어, 그렇게 가정foo.f1유형의 열텍스트, 다음 :
foo (f1) 값 (42);에 삽입
유형에서 토토 꽁 머니가 있으면 허용됩니다정수to Type텍스트표시과제, 그렇지 않으면. (우리 일반적으로 용어 사용과제 토토 꽁 머니to 이런 종류의 토토 꽁 머니를 설명하십시오.)
토토 꽁 머니가 표시된 경우암시 적그런 다음 과제 또는 할당 또는 내부적으로 표현. (우리는 일반적으로 용어를 사용합니다암시 적 토토 꽁 머니이런 종류의 토토 꽁 머니를 설명합니다.) 예를 들어이 쿼리를 고려하십시오 :
2 + 4.0; 선택
파서는 처음에 상수를 유형으로 표시합니다정수및숫자각각. 없음정수 + 숫자시스템 카탈로그이지만 A가 있습니다.숫자 + 숫자운영자. 따라서 쿼리는에서 토토 꽁 머니되면 성공합니다.정수to숫자사용 가능합니다 그리고 표시암시 적- 실제로 그것은. 파서는 암시 적 토토 꽁 머니를 적용하고 해결합니다. 작성된 것처럼 쿼리
CAST (2 AS 숫자) + 4.0; 선택
이제 카탈로그는 또한에서 토토 꽁 머니를 제공합니다.숫자toInteger. 그것이 토토 꽁 머니된다면 표시되었습니다암시 적- 그렇지 않습니다 - 그러면 파서는 위의 것을 선택하는 데 직면 할 것입니다. 해석과 캐스팅의 대안숫자Constant toInteger및 적용Integer + Integer운영자. 부족합니다 선호하는 선택에 대한 지식은 포기하고 쿼리를 모호하게 선언하십시오. 둘 중 하나만이 사실입니다 토토 꽁 머니는 우리가 파서에게 선호하는 방법입니다. 혼합의 해결숫자-and-Integer표현 AS숫자; 그것에 대한 지식이 내장되어 있지 않습니다.
토토 꽁 머니를 암시 적으로 표시하는 것에 대해 보수적 인 것이 현명합니다. 암시 적 주조 경로의 과잉이 유발할 수 있습니다PostgreSQL놀라운 선택 명령의 해석 또는 여러 가지 가능한 해석이 있기 때문에 모두. 좋은 경험의 규칙은 토토 꽁 머니를 암시 적으로 만 호출 할 수있는 동일하게 유형 간의 정보 보존 변환 일반 유형 카테고리. 예를 들어, 토토 꽁 머니int2toint4합리적으로 할 수 있습니다 암시 적이지만의 토토 꽁 머니float8toint4아마도 과제 전용이어야합니다. 과 같은 크로스 유형 카테고리 토토 꽁 머니텍스트toint4, 명시 적 전용이 가장 좋습니다.
참고 :때로는 유용성을 위해 필요합니다 여러 암시 적 토토 꽁 머니를 제공 해야하는 표준 준수 이유 일련의 유형 중에서 피할 수없는 모호성을 초래합니다. 위와 같이. 파서는에 기반한 폴백 휴리스틱을 가지고 있습니다.유형 카테고리및선호 유형그러한 경우에 원하는 행동을 제공하는 데 도움이 될 수 있습니다. 보다PostgreSQL : 문서 : 9.3 : 토토 사이트 생성더 많은 것 정보.
토토 꽁 머니를 만들 수 있으려면 출처 또는 대상 데이터 유형 및usage특권 다른 유형에서. 이진적 통합 토토 꽁 머니를 만들려면해야합니다 슈퍼 유행자. (이 제한은 잘못 되었기 때문에 이루어집니다 이진 통합 토토 꽁 머니 변환은 서버를 쉽게 충돌시킬 수 있습니다.)
토토 꽁 머니의 소스 데이터 유형의 이름.
토토 꽁 머니의 대상 데이터 유형의 이름.
토토 꽁 머니를 수행하는 데 사용되는 함수. 함수 이름은 될 수 있습니다 스키마 자격. 그렇지 않은 경우 기능이 스키마 검색 경로. 함수의 결과 데이터 유형이 일치해야합니다 토토 꽁 머니의 대상 유형. 그것의 주장은 아래에 논의되어 있습니다.
소스 유형이 대상에 이진을 통합 할 수 있음을 나타냅니다. 유형, 토토 꽁 머니를 수행하는 데 기능이 필요하지 않습니다.
토토 꽁 머니가 I/O 변환 토토 꽁 머니임을 나타냅니다. 소스 데이터 유형의 출력 기능 호출 및 전달 대상 데이터의 입력 함수에 대한 결과 문자열 유형.
| 토토 꽁 머니가 과제에서 암시 적으로 호출 될 수 있음을 나타냅니다. 맥락.
| 문맥.
토토 꽁 머니 구현 함수는 1 ~ 3 개의 인수를 가질 수 있습니다. 첫 번째 인수 유형은 동일하거나 이진을 통합 할 수 있어야합니다. 토토 꽁 머니의 소스 유형에서. 두 번째 논쟁은 존재한다면 필수적이어야합니다 형성Integer; 유형을받습니다 대상 유형과 관련된 수정 자,-1없는 경우. 세 번째 논쟁, 존재한다면 유형이어야합니다부울; 수신True토토 꽁 머니가 명시적인 토토 꽁 머니 인 경우거짓그렇지 않으면. (기괴하게, SQL 표준 일부에서 명시적이고 암시적인 토토 꽁 머니에 대해 다른 행동을 요구합니다. 케이스. 이 인수는 구현 해야하는 기능을 위해 제공됩니다 그런 토토 꽁 머니. 자신의 데이터를 설계하는 것이 좋습니다. 유형이 중요합니다.)
토토 꽁 머니 함수의 리턴 유형은 동일해야합니다. 토토 꽁 머니의 대상 유형에 이진을 통합 할 수 있습니다.
일반적으로 토토 꽁 머니는 다른 소스와 대상 데이터가 있어야합니다. 유형. 그러나 동일한 토토 꽁 머니를 선언 할 수 있습니다. 출처 구현 기능이있는 경우 소스 및 대상 유형 하나 이상의 논쟁으로. 이것은 대표하는 데 사용됩니다 시스템 카탈로그에서 유형 별 길이 강요 기능. 그만큼 명명 된 함수는 유형의 유형 값을 강요하는 데 사용됩니다. 두 번째 인수에 의해 주어진 수정 자 값.
토토 꽁 머니가 다른 소스와 대상 유형과 기능이있는 경우 하나 이상의 논쟁이 필요하고 하나에서 변환하는 것을 지원합니다. 다른 단계에 입력하고 길이 강요를 한 단계로 적용하십시오. 그러한 항목을 사용할 수 없으면 유형 수정자는 데이터간에 변환 할 두 개의 토토 꽁 머니 단계가 포함됩니다. 수정자를 적용하려면 유형과 1 초입니다.
도메인 유형으로의 토토 꽁 머니는 현재 영향을 미치지 않습니다. 주조 도메인에서 또는 기본과 관련된 토토 꽁 머니를 사용합니다. 유형.
usePostgreSQL : 문서 : 9.3 : 드롭 사설 토토제거하려면 사용자 정의 토토 꽁 머니.
유형을 양방향으로 변환 할 수 있다면 기억하십시오. 두 가지 방법을 명시 적으로 선언해야합니다.
일반적으로 토토 꽁 머니를 만들 필요는 없습니다 사용자 정의 유형 및 표준 문자열 유형 (텍스트, varchar및char (n)뿐만 아니라 문자열 카테고리에 정의 된 사용자 정의 유형).PostgreSQL자동 I/O를 제공합니다 전환 토토 꽁 머니. 자동 토토 꽁 머니 대 문자열 유형은 다음과 같습니다 과제로 취급되는 동안, 자동 토토 꽁 머니는 문자열에서 토토 꽁 머니합니다. 유형은 명시 적 전용입니다. 이 동작을 대체 할 수 있습니다 자동 토토 꽁 머니를 교체하기 위해 자신의 토토 꽁 머니를 선언하지만 일반적으로 그렇게해야 할 유일한 이유는 당신이 변환이 더 많은 것을 원한다면 표준 할당 전용 또는 명시 적 전용보다 쉽게 촉발 할 수 있습니다 환경. 또 다른 가능한 이유는 당신이 전환을 원하기 때문입니다. 유형의 I/O 함수와 다르게 작동합니다. 그러나 그것은입니다 당신은 얼마나 생각 해야하는지에 대해 두 번 생각해야한다는 사실에 충분히 놀랍습니다 좋은 생각입니다. (소수의 내장 유형이 실제로 있습니다 주로 변환에 대한 행동이 다릅니다 SQL 표준의 요구 사항)
이전PostgreSQL7.3, 모든 데이터 유형과 동일한 이름을 가진 함수는 해당 데이터를 반환했습니다. 유형, 다른 유형에 대한 한 가지 주장은 자동으로 토토 꽁 머니 기능. 이 협약은 그 일에 직면하여 포기되었습니다 스키마 소개 및 대표 할 수 있습니다 시스템 카탈로그의 이진 계약 토토 꽁 머니. 내장 토토 꽁 머니 기능은 여전히이 이름 지정 체계를 따르지만 시스템 카탈로그의 토토 꽁 머니로 표시pg_cast
필요하지는 않지만 계속해서 토토 꽁 머니 구현 기능 이름 지정 의이 오래된 협약을 따르십시오 대상 데이터 유형 후. 많은 사용자들이 할 수있는 데 익숙합니다 기능 스타일 표기법을 사용하여 데이터 유형을 토토 꽁 머니합니다.typename(x). 이 표기법은 사실 토토 꽁 머니 구현 기능; 특별히 처리되지는 않습니다 깁스. 전환 기능이이를 지원하도록 지명되지 않은 경우 그러면 컨벤션은 사용자를 놀라게 할 것입니다. 부터PostgreSQL동일하게 과부하를 허용합니다 인수 유형이 다른 기능 이름, 어려움이 없습니다. 다른 유형의 여러 변환 기능이 있습니다 모두 대상 유형의 이름을 사용합니다.
참고 :실제로 앞의 단락은 an입니다 지나치게 단순화 : 함수 콜이있는 두 가지 사례가 있습니다 구성은 일치하지 않고 토토 꽁 머니 요청으로 취급됩니다. 실제 기능으로. 함수 호출 인 경우이름(x) 기존 기능과 정확히 일치하지는 않지만이름| 데이터 유형의 이름이며PG_CAST이진 통합 가능성을 제공합니다 이 유형으로 토토 꽁 머니x, 호출은 a로 해석됩니다 이진에 필수적인 토토 꽁 머니. 이 예외는 그렇게 만들어집니다 이진 계약 토토 꽁 머니는 기능 구문을 사용하여 호출 할 수 있습니다 기능이 부족하지만. 마찬가지로, 없다면pg_cast입장이지만 토토 꽁 머니는 문자열 유형, 통화는 I/O 변환 토토 꽁 머니로 해석됩니다. 이 예외는 I/O 변환 토토 꽁 머니를 사용하여 호출 할 수 있습니다. 기능 구문.
참고 :예외에 대한 예외도 있습니다 : I/O 복합 유형에서 문자열 유형으로의 변환 토토 꽁 머니는 기능 구문을 사용하여 호출했지만 명시 적으로 작성해야합니다. 토토 꽁 머니 구문 (하나토토 꽁 머니또는::표기법). 이 예외는 후에 추가되었습니다 자동으로 제공되는 I/O 변환 토토 꽁 머니의 도입 실수로 그러한 토토 꽁 머니를 호출하기가 너무 쉬운 것으로 밝혀졌습니다. 기능 또는 열 참조 의도가 의도되었습니다.
Type에서 할당 토토 꽁 머니를 작성하려면bigintto Typeint4기능int4 (bigint):
함수 int4 (bigint)가 할당 된 Cast (bigint as int4) 만들기;
(이 토토 꽁 머니는 이미 시스템에서 사전 정의되어 있습니다.)
the토토 꽁 머니 만들기명령은에 부합합니다.SQLSQL을 제외한 표준 이진 통합 유형 또는 추가에 대한 조항을 제공하지 않습니다 구현 기능에 대한 인수.AS 절대적인isPostgreSQL확장도.
이전 | 배트맨 토토 꽁 머니 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
집계 생성 | up | 콜라이트 만들기 |