테이블에 삽입될 값은 다음에 따른 대상 열의 데이터 유형 단계.
쿼리 대상 유형 해상도
대상과 정확히 일치하는지 확인하세요.
그렇지 않으면 표현식을 대상으로 강제 변환해 보십시오. 유형. 두 가지 유형이 알려지면 성공합니다. 바이너리 호환 또는 변환 기능이 있는 경우. 만약에 표현식은 알 수 없는 유형의 리터럴입니다. 리터럴 문자열이 입력 변환에 제공됩니다. 대상 유형에 대한 루틴입니다.
대상이 고정 길이 유형인 경우(예:문자또는varchar선언됨 길이 포함) 그런 다음 크기 조정 기능을 찾으십시오. 대상 유형. 크기 조정 기능은 동일한 기능입니다. 이름을 유형으로 사용하고 두 인수 중 첫 번째 인수를 취합니다. 해당 유형이고 두 번째는 정수이며 반환됩니다. 같은 유형. 하나가 발견되면 적용되며 다음을 전달합니다. 열의 선언된 길이를 두 번째 매개변수로 사용합니다.
예 5-6.문자저장소 유형 변환
다음으로 선언된 대상 열의 경우문자(20)다음 쿼리는 대상의 크기가 올바르게 지정되었습니다.
tgl= CREATE TABLE vv (v 문자(20));
만들다
tgl= vv에 삽입 SELECT 'abc' || '데프';
삽입 392905 1
tgl= SELECT v, 길이(v) FROM vv;
v | 길이
---------+---------
ABCDEF | 20
(1행)
여기서 실제로 일어난 일은 알려지지 않은 두 사람이 리터럴은 다음과 같이 해결됩니다.텍스트기본적으로, 허용하는||연산자 다음과 같이 해결됨텍스트연결. 그런 다음텍스트연산자의 결과는 다음과 같이 강제됩니다.bpchar ("공백 패딩됨 숯", 문자 데이터 유형의 내부 이름) 대상 열 유형과 일치합니다. (파서가 그것을 알고 있기 때문에텍스트그리고bpchar있습니다 바이너리 호환, 이 강제는 암시적이며 그렇지 않습니다. 실제 함수 호출을 삽입합니다.) 마지막으로 크기 조정 함수bpchar(bpchar, 정수)다음에서 발견됨 시스템 카탈로그를 작성하고 운영자의 결과에 적용하고 저장된 열 길이. 이 유형별 기능은 다음을 수행합니다. 필요한 길이 확인 및 패딩 공간 추가.