2025 년 7 월 17 일 : | 토토 18 베타 2 릴리스!
이 문서는 지원되지 않는 버전의 토토 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다사설 토토 사이트 PostgreSQL : 문서 : 17 : 10.1. 개요버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

10.1. 개요

SQL는 강력하게 입력되었습니다 언어. 즉, 모든 데이터 항목에는 관련 데이터 유형이 있습니다. 동작을 결정하고 허용 사용.PostgreSQL확장 가능한 유형 시스템이 있습니다 그것은 다른 것보다 더 일반적이고 유연합니다SQL구현. 따라서 대부분의 유형 의 변환 행동PostgreSQL는 일반 규칙에 따라 적용됩니다 보다는adhoc휴리스틱. 이를 통해 혼합형 표현식을 사용할 수 있습니다 사용자 정의 유형.

the토토스캐너/파서 어휘 요소를 5 가지 기본 범주로 나눕니다. 정수, 비 지구 번호, 문자열, 식별자 및 키 단어. 대부분의 비 숫자 유형의 상수가 먼저 분류됩니다 문자열로. 그만큼SQL언어 정의는 문자열로 유형 이름을 지정할 수 있습니다 메커니즘을 사용할 수 있습니다PostgreSQL파서를 시작하려면 올바른 경로. 예를 들어, 쿼리 :

텍스트 '원점'을 "레이블", 포인트 '(0,0)' 'value "로 선택합니다.

 라벨 | 값
--------+-------
 원산지 | (0,0)
(1 행)

유형의 2 개의 문자 상수가 있습니다텍스트and포인트. 유형이 a에 지정되지 않은 경우 문자열 문자, 그런 다음 자리 표시 자 유형알 수없는처음에는 할당되어 해결 될 예정입니다 아래에 설명 된 후기 단계.

4 가지 기본 사항이 있습니다SQL별도의 유형이 필요한 구성 의 전환 규칙토토파서 :

함수 호출

많은PostgreSQL유형 시스템은 풍부한 기능 세트 주위에 구축되었습니다. 기능은 하나 이상의 인수를 가질 수 있습니다. 부터PostgreSQL허가 함수 과부하, 함수 이름만으로는 그렇지 않습니다 호출 할 기능을 고유하게 식별합니다. 파서 데이터 유형에 따라 올바른 함수를 선택해야합니다. 제공된 논쟁.

운영자

PostgreSQL허용 접두사 및 포스트 픽스 단일 표현식 (한 번) 연산자 및 바이너리 (2 학습) 연산자. 좋다 함수, 연산자는 과부하 할 수 있으므로 동일한 문제입니다 올바른 연산자를 선택하는 데있어.

가치 저장소

SQL 삽입업데이트진술은 표현식 결과를 표에 배치합니다. 성명서의 표현은 일치해야합니다. 그리고 아마도 대상의 유형으로 변환 될 수 있습니다 열.

Union, CASE및 관련 구성

모든 쿼리가 Unionized의 결과 이후select명령문은 단일 세트로 표시되어야합니다 열의, 각각의 결과 유형select조항은 일치해야합니다 균일 한 세트로 변환되었습니다. 마찬가지로 결과 A의 표현case구성 가되도록 공통 유형으로 변환해야합니다.case전체적으로 표현이 알려져 있습니다 출력 유형. 도 마찬가지입니다.배열구조 및Greatestand최소기능.

시스템 카탈로그는 어떤 변환에 대한 정보를 저장하고, 또는캐스트, 어떤 데이터 사이에 존재합니다 유형 및 이러한 변환을 수행하는 방법. 추가 캐스트가 가능합니다 를 사용하여 사용자가 추가해야합니다.캐스트 만들기명령. (이것은 보통입니다 새로운 데이터 유형 정의와 함께 수행됩니다. 세트 내장 유형 사이의 캐스트는 신중하게 제작되었으며 변경되지 않은 것이 가장 좋습니다.)

Parser가 제공하는 추가 휴리스틱을 사용하면 개선 할 수 있습니다 그룹 간의 적절한 캐스팅 행동의 결정 암시 적 캐스트가있는 유형. 데이터 유형은 다음으로 나뉩니다 몇 가지 기본유형 카테고리, 포함부울, 숫자, String, Bitstring, DateTime, Timespan, 기하학적, 네트워크, 사용자 정의. (목록 참조표 45-45; 그러나 사용자 정의 유형 카테고리를 만들 수도 있습니다.) 각 카테고리 내에는 하나 이상이있을 수 있습니다선호 유형가능한 유형의 선택입니다. 신중한 선택으로 선호하는 유형 및 사용 가능한 암시 적 캐스트는 가능합니다. 모호한 표현 (여러 후보자가있는 표현을 확인하십시오 구문 분석 솔루션)는 유용한 방식으로 해결 될 수 있습니다.

모든 유형 변환 규칙은 여러 원칙으로 설계되었습니다 명심 :

  • 암시 적 변환은 결코 놀라운 일을해서는 안됩니다 예측할 수없는 결과.

  • 파서에 추가 오버 헤드가 없어야합니다. 쿼리에 암시 적 유형 변환이 필요하지 않은 경우 집행자. 즉, 쿼리가 잘 구성되어 있고 이미 유형이 일치하면 쿼리가 추가 비용을 지출하지 않고 실행해야합니다 파서에서 시간을 소개하지 않고 시간 쿼리에서 암시 적 변환 호출.

  • 또한 쿼리에 일반적으로 암시 적 필요한 경우 함수에 대한 변환, 그렇다면 사용자가 새로운 것을 정의합니다. 올바른 인수 유형과 함께 작동하면 파서가해야합니다 이 새로운 기능을 사용하고 더 이상 암시 적 변환을 수행하지 마십시오. 이전 기능을 사용하십시오.