토토 꽁 머니 생성(source_typeAS대상_유형)
기능 포함함수_이름 (argument_type[, ...])
[ 과제로 | 묵시적으로 ]
토토 꽁 머니 만들기(source_typeAS대상_유형)
기능 없음
[ 과제로 | 묵시적으로 ]
토토 꽁 머니 만들기(source_typeAS대상_유형)
INOUT 포함
[ 과제로 | 묵시적으로 ]토토 꽁 머니 만들기새 토토 꽁 머니를 정의합니다. 토토 꽁 머니 두 데이터 유형 간의 변환을 수행하는 방법을 지정합니다. 에 대한 예
토토 꽁 머니 선택(42 AS float8);
정수 상수 42를 유형으로 변환합니다.float8이전에 지정된 함수를 호출하여 이 경우float8(int4). (적합하지 않은 경우 토토 꽁 머니가 정의되었으므로 변환이 실패합니다.)
두 가지 유형이 가능합니다.바이너리 강제형, 이는 변환이 수행될 수 있음을 의미합니다."무료로"어떤 함수도 호출하지 않고. 이 해당 값은 동일한 내부 코드를 사용해야 합니다. 표현. 예를 들어, 유형텍스트그리고varchar두 가지 방식으로 바이너리 강제 변환이 가능합니다. 이진 강제성이 반드시 대칭 관계인 것은 아닙니다. 예를 들어,xml에텍스트현재 무료로 공연 가능 구현하지만 반대 방향에는 다음과 같은 기능이 필요합니다. 최소한 구문 검사를 수행합니다. (바이너리인 두 가지 유형 양방향으로 강제할 수 있는 것은 바이너리 호환이라고도 합니다.)
토토 꽁 머니를 다음과 같이 정의할 수 있습니다.I/O 변환 토토 꽁 머니다음을 사용하여인아웃 포함구문. I/O 변환 토토 꽁 머니는 출력 함수를 호출하여 수행됩니다. 소스 데이터 유형의 결과 문자열을 대상 데이터 유형의 입력 함수. 많은 일반적인 경우에 이 기능을 사용하면 별도의 토토 꽁 머니 함수를 작성할 필요가 없습니다. 전환. I/O 변환 토토 꽁 머니는 일반 토토 꽁 머니와 동일하게 작동합니다. 함수 기반 토토 꽁 머니; 구현만 다릅니다.
기본적으로 토토 꽁 머니는 명시적 토토 꽁 머니에 의해서만 호출될 수 있습니다. 요청은 명시적입니다.토토 꽁 머니(xAS유형이름)또는x::유형이름구조물.
토토 꽁 머니가 표시된 경우AS 할당그러면 값을 할당할 때 암시적으로 호출될 수 있습니다. 대상 데이터 유형의 열입니다. 예를 들어, 다음과 같이 가정합니다.foo.f1유형의 열입니다.텍스트, 다음:
foo(f1) 값(42)에 삽입;
유형에서 토토 꽁 머니하는 경우 허용됩니다.정수입력하려면텍스트표시됨AS 할당, 그렇지 않으면 그렇지 않습니다. (우리는 일반적으로 용어를 사용합니다과제 토토 꽁 머니에 이런 종류의 토토 꽁 머니를 설명하세요.)
토토 꽁 머니가 표시된 경우암시적으로그러면 할당이든, 할당이든 상관없이 모든 컨텍스트에서 암시적으로 호출될 수 있습니다. 내부적으로 표현식으로. (우리는 일반적으로 용어를 사용합니다.암시적 토토 꽁 머니이런 종류의 토토 꽁 머니를 설명합니다.) 예를 들어 다음 쿼리를 고려해보세요.
선택 2 + 4.0;
파서는 처음에 상수를 유형으로 표시합니다.정수그리고숫자각각. 없습니다정수 + 숫자연산자 시스템 카탈로그가 있지만 다음이 있습니다.숫자 + 숫자연산자. 따라서 쿼리는 다음에서 토토 꽁 머니되면 성공합니다.정수에숫자사용 가능 표시되어 있습니다암시적으로— 사실은 그렇습니다. 파서는 암시적 토토 꽁 머니를 적용하고 마치 작성된 것처럼 쿼리
SELECT CAST( 2 AS 숫자 ) + 4.0;
이제 카탈로그는 다음의 토토 꽁 머니도 제공합니다.숫자에정수. 그 캐스팅이라면 표시되었습니다암시적으로— 그렇지 않습니다. — 그러면 파서는 위의 것 중 하나를 선택해야 합니다. 해석과 캐스팅의 대안숫자상수정수그리고 적용정수 + 정수연산자. 부족함 어떤 선택을 선호할지에 대한 지식이 있으면 포기하고 쿼리가 모호하다고 선언합니다. 둘 중 하나만 한다는 사실 토토 꽁 머니는 암묵적으로 파서가 선호하도록 가르치는 방식입니다. 혼합의 해결숫자-그리고-정수다음으로 표현숫자; 그것에 대한 내장된 지식은 없습니다.
토토 꽁 머니를 암시적으로 표시하는 것에 대해서는 보수적인 것이 현명합니다. 암시적 캐스팅 경로가 너무 많으면 다음이 발생할 수 있습니다.PostgreSQL놀랍게도 선택하다 명령을 해석하지 못하거나 명령을 해석할 수 없는 경우 다양한 해석이 가능하기 때문입니다. 좋은 경험상 토토 꽁 머니는 다음 경우에만 암시적으로 호출 가능하도록 만드는 것입니다. 동일한 유형 간의 정보 보존 변환 일반 유형 카테고리. 예를 들어,int2에int4합리적으로 그럴 수 있습니다 암시적이지만 토토 꽁 머니는float8에int4아마도 할당 전용이어야 합니다. 다음과 같은 교차 유형 카테고리 토토 꽁 머니텍스트에int4은 명시적 전용으로 만드는 것이 가장 좋습니다.
참고:때때로 유용성 또는 여러 암시적 토토 꽁 머니를 제공하는 표준 준수 이유 유형 집합 사이에서 피할 수 없는 모호성이 발생함 위와 같이. 파서에는 다음을 기반으로 하는 대체 휴리스틱이 있습니다.유형 카테고리그리고선호 유형이러한 경우 원하는 동작을 제공하는 데 도움이 될 수 있습니다. 참조PostgreSQL : 문서 : 9.3 : 토토 사이트 생성더 보기 정보.
토토 꽁 머니를 생성하려면 소스 또는 대상 데이터 유형 및 보유사용특권 다른 유형에. 바이너리 강제형 토토 꽁 머니를 생성하려면 다음을 수행해야 합니다. 슈퍼유저. (이러한 제한은 잘못된 바이너리 강제 변환이 가능하면 서버가 쉽게 중단될 수 있습니다.)
토토 꽁 머니의 소스 데이터 유형 이름.
토토 꽁 머니의 대상 데이터 유형 이름.
토토 꽁 머니를 수행하는 데 사용되는 함수입니다. 함수 이름은 다음과 같습니다. 스키마 자격을 갖춘. 그렇지 않은 경우 함수는 다음에서 조회됩니다. 스키마 검색 경로. 함수의 결과 데이터 유형이 일치해야 합니다. 토토 꽁 머니의 대상 유형입니다. 그 주장은 아래에서 논의됩니다.
소스 유형이 대상에 대해 바이너리 강제 변환이 가능함을 나타냅니다. 유형이므로 토토 꽁 머니를 수행하는 데 함수가 필요하지 않습니다.
토토 꽁 머니가 다음에 의해 수행되는 I/O 변환 토토 꽁 머니임을 나타냅니다. 소스 데이터 유형의 출력 함수를 호출하고 전달합니다. 대상 데이터의 입력 함수에 대한 결과 문자열 유형.
할당에서 토토 꽁 머니가 암시적으로 호출될 수 있음을 나타냅니다. 컨텍스트.
토토 꽁 머니가 모든 항목에서 암시적으로 호출될 수 있음을 나타냅니다. 맥락.
Cast 구현 함수는 1~3개의 인수를 가질 수 있습니다. 첫 번째 인수 유형은 동일하거나 이진 강제 변환이 가능해야 합니다. 토토 꽁 머니의 소스 유형에서. 두 번째 인수(있는 경우)는 다음과 같아야 합니다. 유형이 되세요정수; 유형을 수신합니다. 대상 유형과 연관된 수정자 또는-1아무것도 없으면. 세 번째 인수(있는 경우)는 유형이어야 합니다.부울; 그것은 받는다참토토 꽁 머니가 명시적 토토 꽁 머니인 경우,거짓그렇지 않으면. (이상하게도 SQL 표준은 일부에서는 명시적 및 암시적 토토 꽁 머니에 대해 서로 다른 동작을 요구합니다. 사례. 이 인수는 구현해야 하는 함수에 제공됩니다. 그런 캐스팅. 자신만의 데이터를 디자인하는 것은 권장되지 않습니다. 이것이 중요하도록 입력하세요.)
토토 꽁 머니 함수의 반환 유형은 다음과 동일해야 합니다. 토토 꽁 머니의 대상 유형으로 바이너리 강제 변환 가능합니다.
일반적으로 토토 꽁 머니에는 소스와 대상 데이터가 달라야 합니다 유형. 그러나 동일한 토토 꽁 머니를 선언하는 것은 허용됩니다. 토토 꽁 머니 구현 기능이 있는 경우 소스 및 대상 유형 하나 이상의 인수로. 이는 다음을 나타내는 데 사용됩니다. 시스템 카탈로그의 유형별 길이 강제 함수. 는 명명된 함수는 해당 유형의 값을 해당 유형으로 강제 변환하는 데 사용됩니다. 두 번째 인수로 제공되는 수정자 값입니다.
토토 꽁 머니에 소스와 대상 유형이 다르고 함수가 있는 경우 둘 이상의 인수를 취하는 경우 하나의 인수 변환을 지원합니다. 한 단계에서 다른 문자를 입력하고 길이 강제를 적용합니다. 해당 항목을 사용할 수 없으면 다음을 사용하는 유형으로 강제 변환됩니다. 유형 수정자에는 두 가지 토토 꽁 머니 단계가 포함됩니다. 하나는 데이터 간 변환입니다. 유형과 수정자를 적용하는 데 1초가 소요됩니다.
도메인 유형에 대한 토토 꽁 머니는 현재 효과가 없습니다. 캐스팅 도메인과의 연결은 기본과 관련된 토토 꽁 머니를 사용합니다. 유형.
사용PostgreSQL : 문서 : 9.3 : 드롭 사설 토토제거하다 사용자 정의 토토 꽁 머니.
유형을 양방향으로 변환할 수 있기를 원한다면 기억하세요 두 가지 방법으로 토토 꽁 머니를 명시적으로 선언해야 합니다.
일반적으로 사이에 토토 꽁 머니를 생성할 필요는 없습니다. 사용자 정의 유형 및 표준 문자열 유형(텍스트, varchar및문자(n)뿐만 아니라 문자열 범주에 속하도록 정의된 사용자 정의 유형).포스트그레SQL자동 I/O 제공 이를 위한 변환 캐스팅입니다. 문자열 유형으로의 자동 토토 꽁 머니는 다음과 같습니다. 할당 토토 꽁 머니로 처리되는 반면 문자열에서 자동 토토 꽁 머니 유형은 명시적 전용입니다. 다음을 통해 이 동작을 재정의할 수 있습니다. 자동 토토 꽁 머니를 대체하기 위해 자신의 토토 꽁 머니를 선언하지만 일반적으로 그렇게 하는 유일한 이유는 전환을 더 많이 원할 경우입니다. 표준 할당 전용 또는 명시적 전용보다 쉽게 호출 가능 설정. 또 다른 가능한 이유는 다음과 같은 변환을 원하기 때문입니다. 해당 유형의 I/O 기능과 다르게 동작합니다. 하지만 그건 충분히 놀랍기 때문에 두 번 생각해 보아야 합니다. 좋은 생각이에요. (실제로 내장 유형 중 소수는 전환에 대해 서로 다른 행동을 보이는 이유는 주로 다음과 같습니다. SQL 표준의 요구 사항입니다.)
이전PostgreSQL7.3, 매 데이터 유형과 이름이 같은 함수가 해당 데이터를 반환했습니다. 유형을 선택하고 다른 유형의 인수 하나를 취하면 자동으로 캐스팅 기능. 이 협약은 다음과 같은 이유로 폐기되었습니다. 스키마를 도입하고 표현할 수 있다 시스템 카탈로그의 바이너리 강제형 토토 꽁 머니. 내장된 토토 꽁 머니 함수는 여전히 이 명명 체계를 따르지만, 시스템 카탈로그에 토토 꽁 머니로 표시됨pg_cast또한.
필수는 아니지만 계속해서 수행하는 것이 좋습니다. 토토 꽁 머니 구현 함수의 이름을 지정하는 이 오래된 규칙을 따르십시오. 대상 데이터 유형 뒤에. 많은 사용자가 다음 작업에 익숙합니다. 함수 스타일 표기법을 사용하여 데이터 유형을 캐스팅합니다. 즉,유형 이름(x). 이 표기법은 사실상 다음을 호출하는 것 이상도 이하도 아닙니다. 토토 꽁 머니 구현 기능; 특별히 취급되지는 않습니다. 캐스팅. 이를 지원하도록 변환 함수의 이름이 지정되지 않은 경우 컨벤션을 사용하면 사용자를 놀라게 할 것입니다. 이후포스트그레SQL동일한 오버로드를 허용합니다. 인수 유형이 다른 함수 이름, 어려움 없음 다양한 유형의 여러 변환 기능이 있는 경우 모두 대상 유형의 이름을 사용합니다.
참고:실제로 이전 단락은 지나치게 단순화: 함수 호출이 두 가지 경우에 해당됩니다. 구문은 일치하지 않고 토토 꽁 머니 요청으로 처리됩니다. 실제 기능으로 변환합니다. 함수 호출인 경우이름(x) 그렇죠 기존 함수와 정확하게 일치하지는 않지만이름은 데이터 유형의 이름이고pg_cast바이너리 강제 변환 제공 유형에서 이 유형으로 캐스팅됩니다.x이면 호출은 다음과 같이 해석됩니다. 이진 강제형 토토 꽁 머니. 이 예외는 다음과 같이 만들어졌습니다. 바이너리 강제형 토토 꽁 머니는 함수형 구문을 사용하여 호출할 수 있습니다. 아무런 기능도 부족하지만. 마찬가지로 없으면pg_cast항목이지만 토토 꽁 머니는 다음과 같습니다. 문자열 유형의 경우 호출은 I/O 변환 토토 꽁 머니로 해석됩니다. 이 예외를 사용하면 I/O 변환 토토 꽁 머니를 다음을 사용하여 호출할 수 있습니다. 함수형 구문.
참고:예외에도 예외가 있습니다: I/O 복합 유형에서 문자열 유형으로의 변환 토토 꽁 머니는 불가능합니다. 함수 구문을 사용하여 호출되지만 명시적으로 작성되어야 합니다. 토토 꽁 머니 구문(둘 중 하나)토토 꽁 머니또는::표기법). 이 예외는 이후에 추가되었습니다. 자동으로 제공되는 I/O 변환 토토 꽁 머니의 도입으로 실수로 그러한 토토 꽁 머니를 호출하기가 너무 쉽다는 것이 밝혀졌습니다. 함수 또는 열 참조가 의도되었습니다.
유형에서 토토 꽁 머니 할당을 생성하려면비긴트입력하려면int4사용 중 기능int4(bigint):
함수 int4(bigint)를 할당으로 사용하여 CAST(bigint AS int4) 생성;
(이 토토 꽁 머니는 시스템에 이미 사전 정의되어 있습니다.)
그토토 꽁 머니 생성명령은 다음을 준수합니다SQL표준, 해당 SQL 제외 바이너리 강제형 유형 또는 추가 항목을 제공하지 않습니다. 구현 함수에 대한 인수입니다.AS 암시적은PostgreSQL확장자도 마찬가지입니다.
| 이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 다음 |
| 집합 생성 | 위로 | 콜렉션 생성 |