이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 4.2. 가치 젠 토토버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

4.2. 가치 메이저 토토 사이트

값 메이저 토토 사이트은 의 대상 목록select명령, AS 의 새로운 열 값삽입또는업데이트또는 여러 가지 검색 조건에서 명령. 값 메이저 토토 사이트식의 결과를 때때로라고합니다.스칼라, 결과와 구별하기 위해 테이블 메이저 토토 사이트식 (테이블). 가치 메이저 토토 사이트 따라서 또한라고합니다.스칼라 메이저 토토 사이트식(또는 간단히메이저 토토 사이트). 그만큼 Expression Syntax는 Primitive에서 값을 계산할 수 있습니다 산술, 논리, 세트 및 기타 작업을 사용한 부품.

값 메이저 토토 사이트식은 다음 중 하나입니다.

  • 상수 또는 문자 적 ​​가치

  • 열 참조

  • 함수 본문에서 위치 매개 변수 참조 정의 또는 준비된 진술

  • 구독 메이저 토토 사이트식

  • 필드 선택 메이저 토토 사이트식

  • 운영자 호출

  • 함수 호출

  • 집계 메이저 토토 사이트

  • 창 함수 호출

  • 타입 캐스트

  • A Collation Expression

  • 스칼라 하위 쿼리

  • 배열 생성자

  • 행 생성자

  • 괄호 안의 또 다른 값 메이저 토토 사이트식 (그룹에 사용됩니다 하위 메이저 토토 사이트 및 우선 순위)

이 목록 외에도 많은 구성이 있습니다. 메이저 토토 사이트으로 분류 될 수 있지만 일반을 따르지 않습니다. 구문 규칙. 이들은 일반적으로 함수의 의미를 가지고 있습니다 연산자 및 적절한 위치에서 설명됩니다9 장. 예는입니다.is null절.

우리는 이미 상수에 대해 논의했습니다섹션 4.1.2. 다음 섹션에서는 나머지 옵션에 대해 설명합니다.

4.2.1. 열 참조

열은 양식으로 참조 할 수 있습니다.

상관 관계.ColumnName

상관 관계a의 이름입니다 테이블 (스키마 이름으로 자격이있을 수 있음) 또는 a에 의해 정의 된 테이블From절. 상관 이름과 분리 점은 열 이름은 현재 쿼리. (참조토토 사이트 : 문서 : 9.3 : 쿼리.)

4.2.2. 위치 매개 변수

위치 매개 변수 참조는 값을 나타내는 데 사용됩니다. 이는 SQL 문에 외부에서 제공됩니다. 매개 변수입니다 SQL 기능 정의 및 준비된 쿼리에 사용됩니다. 일부 클라이언트 라이브러리는 또한 데이터 값 지정을 별도로 지원합니다 SQL 명령 문자열에서,이 경우 매개 변수는 외부 데이터 값을 참조하십시오. 매개 변수의 형태 참조 :

$번호

예를 들어 함수의 정의를 고려하십시오부서, as :

함수 부서 생성 (텍스트)은 부서를 반환합니다
    AS $$ select *에서 from dept where name = $ 1 $$
    언어 SQL;

여기$ 1기능이 호출 될 때마다 첫 번째 함수 인수.

4.2.3. 구독

메이저 토토 사이트식이 배열 유형의 값을 산출하면 a. 배열 값의 특정 요소는 서면으로 추출 할 수 있습니다

메이저 토토 사이트[첨자]

또는 다중 인접 요소 (an"배열 일부분") 쓰기로 추출 할 수 있습니다

메이저 토토 사이트[lower_subscript:어퍼 _subscript]

(여기, 괄호[]문자 그대로 나타납니다.) 각첨자자체는 메이저 토토 사이트이며 정수 가치를 산출해야합니다.

일반적으로 배열메이저 토토 사이트독트 스크립트 메이저 토토 사이트식은 단지 열 참조 또는 위치 매개 변수. 또한 여러 구역을 연결할 수 있습니다 원래 배열이 다차원 인 경우. 예를 들어:

mytable.arraycolumn [4]
mytable.two_d_column [17] [34]
$ 1 [10:42]
(Arayfunction (A, B)) [42]

마지막 예제의 괄호가 필요합니다. 보다섹션 8.15배열에 대한 자세한 내용.

4.2.4. 필드 선택

메이저 토토 사이트식이 복합 유형 (행 유형)의 값을 산출하는 경우, 그런 다음 행의 특정 필드를 서면으로 추출 할 수 있습니다

메이저 토토 사이트.FieldName

일반적으로 행메이저 토토 사이트괄호 안에 있어야하지만 괄호는 선택할 메이저 토토 사이트식은 단지 테이블 참조 또는 위치 매개 변수. 예를 들어:

mytable.mycolumn
$ 1. Somecolumn
(rowfunction (a, b)). col3

(따라서 자격을 갖춘 열 참조는 실제로 특별한 것입니다. 필드 선택 구문의 경우) 중요한 특별 사례는 합성물 인 테이블 열에서 필드 추출 유형:

(Compositecol) .Somefield
(mytable.compositecol) .Somefield

괄호는 여기를 보여주기 위해 필요합니다Compositecol열 이름이 아닌 열 이름입니다. 또는 그mytable는 테이블 이름이 아닙니다 두 번째 케이스의 스키마 이름.

서면으로 복합 가치의 모든 필드를 요청할 수 있습니다.*:

(Compositecol).*

이 표기법은 컨텍스트에 따라 다르게 행동합니다. 보다섹션 8.16.5세부.

4.2.5. 연산자 invocations

연산자에게는 세 가지 가능한 구문이 있습니다 기도:

메이저 토토 사이트 운영자 메이저 토토 사이트(바이너리 디스 픽스 연산자)
운영자 메이저 토토 사이트(단지 접두사 연산자)
메이저 토토 사이트 운영자(unery postfix 연산자)
where운영자토큰이 따릅니다 의 구문 규칙섹션 4.1.3, 또는 핵심 단어 중 하나입니다and, 또는not또는 자격이 있습니다 양식의 연산자 이름 :
연산자 (스키마.OperatorName)

어떤 특정 사업자가 존재하는지, 이들이 단독인지 또는 이진은 시스템에 의해 정의 된 연산자 또는 사용자.PostgreSQL : 문서 : 9.3 : 토토 사이트 추천 및 연산자내장 운영자.

4.2.6. 함수 호출

함수 호출의 구문은 함수의 이름입니다. (스키마 이름으로 자격이있을 수 있음) 괄호 안에 동봉 된 목록 :

function_name([메이저 토토 사이트[, 메이저 토토 사이트 ... ]])

예를 들어, 다음은 2 :의 제곱근을 계산합니다.

sqrt (2)

내장 기능 목록이9 장. 다른 기능은 다음으로 추가 할 수 있습니다 사용자.

일부 사용자가 불신하는 데이터베이스에서 쿼리를 발행 할 때 다른 사용자,에서 보안 예방 조치를 관찰합니다.섹션 10.3작문 기능 전화.

인수는 선택적으로 이름이 첨부 될 수 있습니다. 보다섹션 4.3자세한 내용.

참고 :단일 인수를 취하는 함수 복합 유형은 필드 선택을 사용하여 선택적으로 호출 할 수 있습니다 구문 및 반대로 필드 선택은 기능적으로 작성할 수 있습니다. 스타일. 즉, 표기법col (테이블)andtable.col상호 교환 가능합니다. 이것 행동은 SQL 표준이 아니지만에 제공됩니다.postgresql함수를 사용할 수 있기 때문입니다 에뮬레이션하려면"컴퓨터 필드". 자세한 내용 정보 참조섹션 8.16.5.

4.2.7. 골재 메이저 토토 사이트

an집계 메이저 토토 사이트application of an aggregate function across the rows selected by a 질문. 집계 함수는 여러 입력을 단일로 줄입니다 입력의 합 또는 평균과 같은 출력 값. 구문 골재 메이저 토토 사이트의 다음 중 하나입니다.

Aggregate_name(메이저 토토 사이트[, ...] [Order_By_Clause])Aggregate_name(All메이저 토토 사이트[, ...] [Order_By_Clause])Aggregate_name(고유 한메이저 토토 사이트[, ...] [Order_By_Clause])Aggregate_name( *)

여기서Aggregate_nameis 이전에 정의 된 집계 (스키마로 자격이있을 수 있습니다 이름),메이저 토토 사이트모든 값입니다 자체가 집계 메이저 토토 사이트을 포함하지 않는 메이저 토토 사이트 또는 창 함수 호출 및Order_By_Clause선택 사항주문 by아래 설명대로 조항

첫 번째 골재 메이저 토토 사이트 형태는 집계를 호출합니다 각 입력 행마다 한 번. 두 번째 형태는 첫 번째 형태와 동일하며 부터all기본값입니다. 세 번째 형태 각각의 별개의 값에 대해 집계를 한 번 호출합니다. 메이저 토토 사이트식 (또는 다중 메이저 토토 사이트식에 대한 뚜렷한 값 세트) 입력 행에서 발견됩니다. 마지막 양식은 집계를 한 번 호출합니다 각 입력 행에 대해; 특정 입력 값이 지정되지 않으므로 일반적으로에만 유용합니다.count (*)집계 기능.

대부분의 집계 함수는 널 입력을 무시하여 행 어떤 하나 이상의 메이저 토토 사이트식 수율 널이 폐기되는지. 달리 명시되지 않는 한, 이것은 모두에 대해 사실이라고 가정 할 수 있습니다. 내장 골재.

예를 들어count (*)총계를 생성합니다 입력 행 수;count (f1)입력 행의 수f1is 비 널, 이후count널을 무시합니다. 그리고count (별개의 f1)숫자를 생산합니다 뚜렷한F1.

일반적으로 입력 행은 집계 함수로 공급됩니다. 지정되지 않은 순서. 많은 경우에 이것은 중요하지 않습니다. ~을 위한 예,min동일한 결과를 생성합니다 입력을받는 순서가 상관없이 집계 함수 (예 :array_aggandString_agg)에 의존하는 결과를 생성합니다 입력 행의 순서. 그러한 집계를 사용할 때 선택 과목Order_By_Clause할 수 있습니다 원하는 순서를 지정하는 데 사용됩니다. 그만큼Order_By_Clausea와 동일한 구문이 있습니다 쿼리 레벨주문 by설명대로 절 안에무지개 토토 : 문서 : 9.3 : 정렬 행를 제외하고 메이저 토토 사이트식은 항상 메이저 토토 사이트 일 뿐이며 출력 열이 될 수 없습니다 이름 또는 숫자. 예를 들어:

테이블에서 Array_Agg (A 주문)를 선택하십시오.

다중 연계 집계 함수를 다룰 때, 참고 그게주문 by조항은 결국갑니다 집계 인수. 예를 들어, 이것을 작성하십시오 :

표에서 string_agg (a, ','주문)를 선택하십시오.

그렇지 않습니다 :

테이블에서 string_agg (a, ',')를 선택하십시오.  -- 잘못된

후자는 구문 적으로 유효하지만 2의 단일 연계 집계 기능주문 by키 (두 번째는 다소 쓸모가 없습니다 상수이기 때문에).

if별도의에 추가로 지정되어 있습니다Order_By_Clause주문 by메이저 토토 사이트은 정기적으로 일치해야합니다 집계의 주장; 즉, 당신은 an을 정리할 수 없습니다 에 포함되지 않은 메이저 토토 사이트별도의목록.

참고 :둘 다 지정하는 능력별도의and주문 by집계 기능은입니다.PostgreSQL확장.

사전 정의 된 집계 함수는에 설명되어 있습니다.섹션 9.20. 다른 집계 기능은 사용자가 추가 할 수 있습니다.

집계 메이저 토토 사이트식은 결과 목록 또는에만 나타날 수 있습니다.a 조항select명령. 다른 조항에서는 금지되어 있습니다. 와 같은여기서골재의 결과 전에 논리적으로 평가됩니다 형성.

집계 메이저 토토 사이트식이 하위 쿼리에 나타날 때 (참조섹션 4.2.11PostgreSQL : 문서 : 9.3 : 서브 퀘리 토토 꽁 머니식), 집계는 일반적으로 하위 쿼리의 행에서 평가됩니다. 그러나 집계의 주장에만 포함되는 경우 예외가 발생합니다. 외부 변수 : 집계는 가장 가까운 곳에 속합니다 이러한 외부 레벨이며 해당 쿼리 행을 통해 평가됩니다. 그만큼 전체적으로 집계 메이저 토토 사이트은 하위 쿼리가 나타나고 어떤 사람보다 상수 역할을합니다. 해당 하위 퀘스트의 평가. 나타나는 것에 대한 제한 결과 목록에서 또는절 집계가 속한 쿼리 레벨에 대해 적용됩니다. 에게.

4.2.8. 창 함수 호출

a창 함수 호출일부에 대한 골재 유사 함수의 적용 쿼리에 의해 선택된 행. 정기적 인 집계 기능 호출과 달리 이것은 선택한 행을 단일로 그룹화하는 것과 관련이 없습니다. 출력 행 - 각 행은 쿼리 출력에서 ​​분리되어 있습니다. 하지만 창 함수는 일부가 될 모든 행을 스캔 할 수 있습니다. 그룹화 사양에 따른 현재 행 그룹의 (파티션 by목록) 창 함수 부르다. 창 함수 호출의 구문은 수행원:

function_name([메이저 토토 사이트[, 메이저 토토 사이트 ... ]]) 오버Window_name
function_name([메이저 토토 사이트[, 메이저 토토 사이트 ... ]]) 오버 (Window_definition)function_name( *) OverWindow_name
function_name( *) 오버 (Window_definition)

여기서window_definition통사론

[기존_window_name]
[파티션메이저 토토 사이트[, ...]]
[주문메이저 토토 사이트[ASC | desc | 사용운영자] [nulls 첫 번째 | 마지막  ] [, ...] ]
[frame_clause]

및 선택 사항frame_clause|

범위 | 줄frame_start범위 | 줄 사이의frame_startandframe_end

여기서frame_startandframe_end

미리 알려지지 않은value선행
현재 행value다음
무한한 추종

여기,메이저 토토 사이트자체가 아닌 값 메이저 토토 사이트식은 창 함수를 포함합니다 전화.

Window_namea에 대한 참조입니다 쿼리에 정의 된 지명 된 창 사양절. 또는 전체Window_definition내부에 제공 될 수 있습니다 괄호는 지명 된 창을 정의하는 것과 동일한 구문을 사용합니다. 에서절; 참조select자세한 내용은 참조 페이지. 가치가 있습니다 그것을 지적하는Over Wname는 그렇지 않습니다 정확히 동등한Over (wname); 그만큼 후자는 창 정의를 복사하고 수정한다는 것을 의미합니다 참조 된 창 사양에 프레임 조항.

the파티션 by옵션 그룹은 행을 그룹화합니다 쿼리의파티션창 함수에 의해 별도로 처리됩니다.파티션 by쿼리 레벨과 유사하게 작동그룹 by절을 제외하고 메이저 토토 사이트식은 항상 메이저 토토 사이트 일 뿐이며 출력 열이 될 수 없습니다 이름 또는 숫자. 없이파티션 by, 쿼리에 의해 생성 된 모든 행은 단일 파티션으로 취급됩니다. 그만큼주문 by옵션 주문을 결정합니다 파티션 행이 창으로 처리되는 기능. 쿼리 레벨과 유사하게 작동주문 by조항이지만 마찬가지로 사용할 수 없습니다 출력 열 이름 또는 숫자. 없이주문 에 의해, 행은 지정되지 않은 순서로 처리됩니다.

theframe_clause를 구성하는 행 세트창 프레임, 해당 창의 현재 파티션의 하위 집합입니다. 전체 파티션 대신 프레임에 작용하는 기능. 그만큼 프레임은 어느 쪽이든 지정할 수 있습니다범위또는모드; 두 경우 모두, 그것은에서 나옵니다 그만큼frame_startto theframe_end. 만약에frame_end생략되면 기본값현재 행.

aframe_startof미리 알려지지 않은는 프레임이 시작되는 것을 의미합니다 파티션의 첫 번째 줄, 그리고 마찬가지로 Aframe_endof생식이없는 수행원프레임이 마지막 행으로 끝나는 것을 의미합니다. 분할.

in범위모드, Aframe_startof현재 열프레임이 현재 행의 첫 번째로 시작하는 것을 의미합니다피어행 (행)주문 주문현재 행과 동등한 것으로 간주), aframe_endof현재 행는 프레임이 마지막으로 끝나는 것을 의미합니다 동등한 동료. 안에모드,현재 행단순히 현재 행을 의미합니다.

thevalue 선행andvalue follow케이스는 현재 허용됩니다 안에모드. 그들은 프레임을 나타냅니다 지정된 행 수를 시작하거나 종료하기 전후 현재 행.value정수 메이저 토토 사이트식은 변수를 포함하지 않습니다 함수 또는 창 함수. 값은 널 또는 부정적인; 그러나 전류를 선택하는 것은 0 일 수 있습니다. 열.

기본 프레임 옵션은입니다.범위 미리 알려지지 않은,전례와 현재 행 사이의 범위. 와 함께주문 by, 이것은 프레임을 설정합니다 파티션의 모든 행은 현재 행의 마지막 행을 통해 시작됩니다. 또래. 없이주문 by, 모든 행의 행 파티션은 모든 행이되므로 창 프레임에 포함됩니다. 현재 행의 피어.

제한은입니다.frame_start무한한 추종, frame_end미리 알려지지 않은frame_end선택은 이전에 나타날 수 없습니다 위의 목록보다frame_start선택 - 예를 들어현재 행 사이의 범위 그리고value선행그렇지 않습니다 허용된.

내장 창 함수는에 설명되어 있습니다.표 9-49. 다른 창 함수는 사용자가 추가 할 수 있습니다. 또한 모든 내장 또는 사용자 정의 집계 기능은 창으로 사용할 수 있습니다. 기능.

사용*매개 변수가없는 집계 함수를 창 함수로 호출합니다 예count (*) Over (x order에 의한 파티션 와이). 별표 (*)는 관례 적으로입니다 응집되지 않은 창 함수에는 사용되지 않습니다. 집계 창 함수는 정상 집계 함수와 달리 허용하지 않습니다별도의또는주문 에 의해함수 인수 목록에서 사용하려면

창 함수 호출은에서만 허용됩니다.select목록 및주문 에 의해쿼리 조항.

창 함수에 대한 자세한 내용은 찾을 수 있습니다.섹션 3.5, 섹션 9.21, 섹션 7.2.4.

4.2.9. 타입 캐스트

유형 캐스트는 하나의 데이터 유형에서 변환을 지정합니다. 또 다른.PostgreSQL2를 수락합니다 유형 캐스트에 대한 동등한 구문 :

cast (메이저 토토 사이트as타입)메이저 토토 사이트::타입

the캐스트구문은 SQL을 준수합니다. 그만큼 구문::역사적PostgreSQL사용법.

캐스트가 알려진 유형의 값 메이저 토토 사이트식에 적용되면, It 런타임 유형 변환을 나타냅니다. 캐스트는 성공할 것입니다 적절한 유형 변환 작업이 정의 된 경우. 알아채다 이것은 상수가있는 캐스트의 사용과 미묘하게 다릅니다. 에 표시된대로섹션 4.1.2.7. 캐스트가 불완전한 문자 문자 그대로 적용됩니다 문자 그럴 상수에 유형의 초기 할당을 나타냅니다. 가치가 있으므로 모든 유형에 대해 성공할 것입니다 (의 내용이 문자열 리터럴은 데이터 유형에 대해 허용 가능한 입력 구문입니다).

명시 적 유형 캐스트는 일반적으로 없으면 생략 할 수 있습니다. 값 메이저 토토 사이트이 생성 해야하는 유형에 대한 모호성 ( 예를 들어, 테이블 열에 할당 된 경우); 시스템은 할 것입니다 그러한 경우에 주조 된 유형을 자동으로 적용하십시오. 그러나 자동 캐스팅은 표시된 캐스트에 대해서만 이루어집니다"암시 적으로 적용해도"시스템 카탈로그에서. 다른 캐스트는 명시 적 캐스팅 구문으로 호출되어야합니다. 이것 제한은 놀라운 전환을 방지하기위한 것입니다 조용히 적용되는 것.

함수와 같은 유형을 지정할 수도 있습니다. 통사론:

typename(메이저 토토 사이트)

그러나 이름도 유효한 유형에 대해서만 작동합니다. 기능 이름. 예를 들어,더블 정도이런 식으로 사용할 수 없지만 동등한float8할 수 있습니다. 또한 이름간격, Time타임 스탬프이 방식으로 만 사용할 수 있습니다 구문 충돌로 인해 두 번 인용 된 경우. 따라서 기능과 같은 캐스트 구문을 사용하면 불일치와 아마도 피해야 할 것입니다.

참고 :함수와 같은 구문은 실제로 기능 일뿐입니다 부르다. 두 표준 캐스트 구문 중 하나가 런타임 변환은 내부적으로 등록 된 것을 호출합니다 변환을 수행하는 기능. 컨벤션에 의해, 이러한 전환 함수는 출력 유형과 동일한 이름을 가지므로"기능형 구문"더 이상 아무것도 아닙니다 기본 변환 기능을 직접 호출하는 것보다. 분명히 이것은 휴대용 응용 프로그램이 의존합니다. 자세한 내용은 참조캐스트 만들기.

4.2.10. Collation Expressions

theCollate절은 메이저 토토 사이트의 협업. 그것은 메이저 토토 사이트에 추가됩니다 적용 :

exprCollateCollation

여기서Collation가능성이 있습니다 스키마 자격 식별자. 그만큼Collate조항은 연산자보다 더 단단한 바인드입니다. 괄호는 언제 사용할 수 있습니다 필요한.

Collation이 명시 적으로 지정되지 않은 경우 데이터베이스 시스템 둘 중 하나는 메이저 토토 사이트식 또는 데이터베이스의 기본 콜렉션에 대한 기본값 메이저 토토 사이트에 관련된 열이없는 경우.

두 가지 일반적인 용도Collate절에서 정렬 순서를 재정의하고 있습니다주문 by조항, 예 :

TBL에서 A, B, C를 선택하십시오 ... "C"에 의해 주문

그리고 함수 또는 연산자의 충돌을 재정의하는 것은 로케일에 민감한 결과가 있습니다. 예 :

선택 *에서 tbl에서 a 'foo'Collate "C";에서 선택하십시오.

후자의 경우.Collate조항은 입력 인수에 첨부됩니다 우리가 영향을 미치고 싶은 운영자. 어떤 논쟁이 중요하지 않습니다 연산자 또는 함수 호출Collate절은 연산자 또는 기능은 모든 인수를 고려하여 도출되고 명시 적Collate절은 무시됩니다 다른 모든 논쟁의 집단. (비 일치 첨부Collate하나 이상의 논쟁에 대한 조항, 그러나 오류입니다. 자세한 내용은 참조섹션 22.2.) 따라서 동일하게 제공합니다 이전 예제로 결과 :

선택 *에서 tbl에서 "c" 'foo';에서 collate

그러나 이것은 오류입니다 :

선택 *에서 tbl에서 (a 'foo') "c";를 충족시킵니다.

|청소 불가능한 데이터 유형부울.

4.2.11. 스칼라 하위 Queries

스칼라 하위 쿼리는 평범합니다select괄호 안의 쿼리는 하나의 열로 정확히 하나의 행을 반환합니다. (보다토토 사이트 : 문서 : 9.3 : 쿼리정보에 대한 정보 쿼리 쓰기.)select쿼리입니다 실행되고 단일 반환 된 값이 주변에서 사용됩니다. 가치 메이저 토토 사이트. 더 많이 반환하는 쿼리를 사용하는 것은 오류입니다. 스칼라 하위 쿼리로서 하나 이상의 열 이상. (하지만 만약 특정 실행 중에 하위 쿼리는 행을 반환합니다. 오류가 아닙니다. 스칼라 결과는 널로 간주됩니다.) 하위 퀘스트 주변 쿼리의 변수를 참조 할 수 있으며, 이는 작동합니다. 하위 쿼리의 하나의 평가 중 상수로. 참조 참조PostgreSQL : 문서 : 9.3 : 서브 퀘리 토토 꽁 머니식다른 경우 하위 쿼리와 관련된 메이저 토토 사이트.

예를 들어, 다음은 가장 큰 도시 인구를 발견합니다. 각 주 :

이름을 선택하십시오.
    주에서;

4.2.12. 배열 생성자

배열 생성자는 배열 값을 구축하는 메이저 토토 사이트식입니다. 회원 요소에 값을 사용합니다. 간단한 배열 생성자 핵심 단어로 구성배열, 왼쪽 사각형 브래킷[, 메이저 토토 사이트 목록 배열 요소 값에 대한 (쉼표로 분리). 오른쪽 사각형 브래킷]. 예를 들어:

배열 선택 [1,2,3+4];
  정렬
-------
 1,2,7

기본적으로 배열 요소 유형은 공통 유형의 멤버 메이저 토토 사이트식, for와 동일한 규칙을 사용하여 결정Union또는CASECORPORTUTS (참조PostgreSQL : 문서 : 9.3 : 범퍼카 토토, Case 및 관련 구성). 배열을 명시 적으로 캐스팅하여이를 무시할 수 있습니다 예를 들어 원하는 유형의 생성자 (예 :

배열 선택 [1,2,22.7] :: 정수 [];
  정렬
---------
 1,2,23

이것은 각 메이저 토토 사이트식을 배열에 캐스팅하는 것과 동일한 효과를 가지고 있습니다. 요소 유형 개별적으로. 캐스팅에 대한 자세한 내용은 참조섹션 4.2.9.

다차원 배열 값은 둥지 배열로 구축 할 수 있습니다 생성자. 내부 생성자에서 핵심 단어배열생략 할 수 있습니다. 예를 들어, 이들은 생성합니다 동일한 결과 :

배열 선택 [배열 [1,2], 배열 [3,4]];
     정렬
-----------------
 1,2, 3,4

다차원 배열은 직사각형, 내부 여야하므로 동일한 레벨의 생성자는 동일한 하위 배열을 생성해야합니다. 치수. 외부에 적용되는 모든 캐스트배열생성자는 모든 사람에게 자동으로 전파됩니다 내부 생성자.

다차원 배열 생성자 요소는 무엇이든 될 수 있습니다 하위 단순한 것뿐만 아니라 적절한 종류의 배열을 산출합니다.배열구성. 예를 들어:

생성 테이블 arr (f1 int [], f2 int []);

ARR 값에 삽입 (배열 [1,2], [3,4]], 배열 [[5,6], [7,8]]);

배열 [f1, f2, '9,10, 11,12':: int []]를 선택하십시오.
                     정렬
------------------------------------------------
 1,2, 3,4, 5,6, 7,8, 9,10, 11,12

빈 배열을 만들 수는 있지만 불가능하기 때문에 유형이없는 배열이 있으시면 비워 두는 것을 명시 적으로 시전해야합니다. 원하는 유형으로 배열. 예를 들어:

array [] :: integer [];
 정렬
-------

하위 퀴어. 이 형식으로 배열 생성자는 키워드배열괄호가 뒤 따릅니다 (브라켓이 아님) 하위 퀘스트. 예를 들어:

배열을 선택합니다 ( 'bytea%'와 같은 Proname과 같은 PG_PROC에서 OID를 선택);
                                 정렬
----------------------------------------------------------------------------------------------------------------------------------------------.
 2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31,2412,2413

하위 쿼리는 단일 열을 반환해야합니다. 결과 1 차원 배열은 각 행에 요소가 있습니다. 하위 쿼리 결과, 요소 유형이 하위 쿼리의 출력 열.

|배열항상 하나부터 시작합니다. 자세한 정보 배열에 대해 참조PostgreSQL : 문서 : 9.3 : 토토 꽁 머니.

4.2.13. 행 생성자

행 생성자는 행 값을 구축하는 메이저 토토 사이트식입니다 (또한 멤버 필드의 값을 사용하여 복합 값이라고합니다. 행 생성자는 핵심 단어로 구성됩니다Row, 왼쪽 괄호, 0 이상의 메이저 토토 사이트 (쉼표로 분리) 행 필드 값과 마지막으로 오른쪽 괄호. 을 위한 예:

Select Row (1,2.5, '이것은 테스트입니다');

키워드Row는 선택 사항이 있습니다 목록에서 하나 이상의 메이저 토토 사이트식입니다.

행 생성자는 구문을 포함 할 수 있습니다RowValue.*행 값의 요소 목록으로 확장됩니다. 가 발생합니다..*구문이 사용됩니다 A의 최상위 레벨select목록 (참조섹션 8.16.5). 을 위한 예, if tablet열이 있습니다F1andF2, 이들은입니다 같은:

t에서 행 (t.*, 42)을 선택하십시오.
t.f1, t.f2, 42)를 선택하여 t;

참고 :PostgreSQL8.2,.*구문이 연속으로 확장되지 않았습니다 생성자, 그래서 글쓰기행 (t.*, 42)첫 번째 필드가 또 다른 행 값인 2 필드 행을 만들었습니다. 새로운 행동은 일반적으로 더 유용합니다. 오래된 것이 필요하다면 중첩 행 값의 동작, 내부 행 값을 쓰지 않고.*, 예를 들어행 (t, 42).

기본적으로 aRow메이저 토토 사이트식은 익명 레코드 유형입니다. 필요한 경우 그럴 수 있습니다 명명 된 복합 유형으로 캐스트 - 테이블의 행 유형 또는 로 생성 된 복합 유형유형 생성 처럼. 모호성을 피하기 위해 명시적인 캐스트가 필요할 수 있습니다. 을 위한 예:

테이블 생성 mytable (f1 int, f2 float, f3 텍스트);

기능 getf1 (mytable) 생성 int를 'select $ 1.f1'언어 SQL로 반환합니다.

- 하나의 getf1 () 만 존재하기 때문에 캐스트가 필요하지 않습니다
getf1을 선택하십시오 (행 (1,2.5, '이것은 테스트입니다');
 getf1
-------
     1
(1 줄)

유형 myrowtype (f1 int, f2 text, f3 numeric)를 만듭니다.

기능 getf1 (myrowtype)은 int를 'select $ 1.f1'언어 SQL로 반환합니다.

- 이제 호출 할 기능을 표시하려면 캐스트가 필요합니다.
getf1을 선택하십시오 (행 (1,2.5, '이것은 테스트입니다');
오류 : 함수 getf1 (레코드)은 고유하지 않습니다

getf1 (행 (1,2.5, '테스트입니다') :: mytable);
 getf1
-------
     1
(1 줄)

getf1을 선택하십시오 (cast (행 (11, '이것은 테스트입니다', 2.5)));
 getf1
-------
    11
(1 행)

행 생성자를 사용하여 복합 값을 만들 수 있습니다. 복합 유형 테이블 열에 저장되거나 복합 매개 변수를 수락하는 함수. 또한 가능합니다 두 행 값을 비교하거나 행을 |IS 널또는, 예 :

SELECT ROW (1,2.5, '테스트입니다') = Row (1, 3, '동일하지 않음');

SELECT ROW (표*)는 테이블에서 NULL입니다.  -완전히 널 줄 감지

자세한 내용은 참조PostgreSQL : 문서 : 9.3 : 행 및 스포츠 토토 비교. 행 생성자는 또한 관련하여 사용할 수 있습니다 서브 쿼리,섹션 9.22.

4.2.14. 메이저 토토 사이트 평가 규칙

하위 메이저 토토 사이트의 평가 순서는 정의되지 않았습니다. ~ 안에 특히, 연산자 또는 함수의 입력은 반드시 왼쪽에서 오른쪽으로 또는 다른 고정에서 평가되었습니다 주문하다.

메이저 토토 사이트의 결과가 그것의 일부만 평가하면 다른 하위 메이저 토토 사이트은 전혀 평가되지 않습니다. 예를 들어, 한 사람이 다음과 같이 썼다면

true 또는 somefunc (); 선택

thesomefunc ()아마도 (아마) 그렇지 않을 것입니다 전혀 불렀습니다. 한 사람이 다음과 같은 경우에도 마찬가지입니다.

몇 가지 푸치 () 또는 true;를 선택하십시오.

이것은 왼쪽에서 오른쪽과 동일하지 않다는 점에 유의하십시오"단락"일부 프로그래밍 언어에서 발견됩니다.

결과적으로 측면과 기능을 사용하는 것은 현명하지 않습니다. 복잡한 메이저 토토 사이트의 일부로서의 효과. 특히 그렇습니다 부작용 또는 평가 순서에 의존하는 데 위험합니다여기서andClauses, 이러한 조항은의 일부로 광범위하게 재 처리되기 때문입니다 실행 계획 개발. 부울 메이저 토토 사이트 (and/또는/not조합) 그 조항에서 부울 법에 의해 허용되는 모든 방식으로 재구성 대수학.

평가 순서를 강제하는 것이 필수적 인 경우 ACASE구성 (참조섹션 9.17)를 사용할 수 있습니다. 을 위한 예를 들어, 이것은 분열을 피하려는 신뢰할 수없는 방법입니다. a여기서절 :

선택 ... 여기서 x 0 및 y/x 1.5;

하지만 안전합니다 :

선택 ... x 0 이후의 경우 y/x 1.5 else false end;

aCASE이러한 방식으로 사용되는 구성 최적화 시도를 물리 칠 것이므로 필요한. (이 특별한 예에서는 더 좋을 것입니다 서면으로 문제를 회피하는 것y 1.5*x대신.)

CASE그러한 문제에 대한 치료법이 아닙니다. 하지만. 위에서 설명한 기술의 한 가지 한계는 그 것입니다 일정한 하위 메이저 토토 사이트의 조기 평가를 방해하지 않습니다. 처럼 설명PostgreSQL : 문서 : 9.3 : 토토 사이트 변동성 범주, 기능 및 운영자 표시불변쿼리가있을 때가 아니라 계획 될 때 평가할 수 있습니다. 실행. 예를 들어

x 0이면 x 0을 선택하여 x 1/0 끝 탭에서

플래너는 일정한 서브 메이저 토토 사이트을 단순화하려고합니다 테이블의 모든 줄은x 0그게else암은 결코 입력되지 않습니다 런 타임에.

그 특정 예는 바보 같은 것처럼 보일 수 있지만 관련 사례 상수가 쿼리에 발생할 수있는 상수를 분명히 포함하지 않습니다 함수 인수의 값 이후 함수 내에서 실행됩니다 그리고 로컬 변수는 상수로 쿼리에 삽입 될 수 있습니다. 계획 목적. 이내에pl/pgsql예를 들어, 기능if-the-else위험한 계산을 보호하기위한 진술은 다음과 같습니다 그냥 둥지를 겨냥하는 것보다 훨씬 안전합니다CASE메이저 토토 사이트.

같은 종류의 또 다른 한계는 A입니다.CASE집계의 평가를 방지 할 수 없습니다 골재 메이저 토토 사이트이 있기 때문에 그 안에 포함 된 발현 a의 다른 메이저 토토 사이트보다 앞서 계산selectList 또는조항이 고려됩니다. 예를 들어, 다음 쿼리는 다음을 유발할 수 있습니다 부서별 오류가 발생 했음에도 불구하고 보이는 것처럼 보였습니다 그것:

Min (직원) 0 인 경우 사례를 선택하십시오
            그런 다음 AVG (비용 / 직원)
       끝
    부서에서;

themin ()andavg ()집계는 동시에 계산됩니다 모든 입력 행, 행이있는 경우직원제로의 영역은 0입니다 결과를 테스트 할 기회가 있기 전에 오류가 발생합니다. 의min (). 대신, A 사용어디문제가있는 입력 행을 방지하기위한 조항 처음에 집계 기능에 도달합니다.