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

4.2. 가치 스포츠 토토 결과

값 스포츠 토토 결과은 다양한 상황에서 사용됩니다. 의 대상 목록에서select명령, 새 열 값으로삽입또는업데이트또는 a의 검색 조건에서 명령 수. 값 스포츠 토토 결과의 결과는 때때로입니다 a스칼라, 그것을 구별하기 위해 테이블 스포츠 토토 결과식 (테이블)의 결과. 값 따라서 스포츠 토토 결과은라고도합니다.스칼라 스포츠 토토 결과(또는 간단히스포츠 토토 결과). 스포츠 토토 결과식 구문이 허용합니다 산술을 사용하여 원시 부품의 값 계산, 논리, 세트 및 기타 작업.

값 스포츠 토토 결과식은 다음 중 하나입니다.

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

  • 열 참조

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

  • 구독 스포츠 토토 결과식

  • 필드 선택 스포츠 토토 결과식

  • 운영자 호출

  • 함수 호출

  • 집계 스포츠 토토 결과

  • 창 함수 호출

  • 타입 캐스트

  • 스칼라 하위 퀴어

  • 배열 생성자

  • 행 생성자

  • 괄호 안의 또 다른 값 스포츠 토토 결과식 (그룹에 사용됩니다 하위 스포츠 토토 결과 및 우선 순위)

이 목록 외에도 많은 구성이 있습니다. 그것은 스포츠 토토 결과으로 분류 될 수 있지만 아무것도 따르지 않습니다. 일반 구문 규칙. 이것들은 일반적으로 a의 의미를 가지고 있습니다 기능 또는 연산자이며 적절한 것으로 설명됩니다 위치토토 핫 : 문서 : 9.0 : 기능 및 연산자. 예는 그만큼is null절.

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

4.2.1. 열 참조

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

상관 관계.ColumnName

상관 관계a의 이름입니다 테이블 (스키마 이름으로 자격이있을 수 있음) 또는 a에 의해 정의 된 테이블From절. 상관 관계 이름과 분리 점은 생략 될 수 있습니다 열 이름이 사용중인 모든 테이블에서 고유 한 경우 현재 쿼리에서. (참조메이저 토토 사이트 : 문서 : 9.0 : 쿼리.)

4.2.2. 위치 매개 변수

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

$번호

예를 들어 함수의 정의를 고려하십시오부서, 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]

마지막 예제의 괄호가 필요합니다. 보다PostgreSQL : 문서 : 9.0 : 토토더 많은 정보 배열.

4.2.4. 필드 선택

스포츠 토토 결과식이 복합 유형의 값을 산출하는 경우 (행 유형), 그런 다음 행의 특정 필드를 추출 할 수 있습니다. 글쓰기

스포츠 토토 결과.FieldName

일반적으로 행스포츠 토토 결과괄호 안에 있어야하지만 선택할 수정할 때 괄호를 생략 할 수 있습니다. From은 단지 테이블 참조 또는 위치 매개 변수입니다. 을 위한 예:

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

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

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

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

4.2.5. 연산자 호출

연산자에게는 3 개의 가능한 구문이 있습니다 기도:

스포츠 토토 결과 운영자 스포츠 토토 결과(바이너리치기 연산자)
운영자 스포츠 토토 결과(단수 접두사 연산자)
스포츠 토토 결과 운영자(unery postfix 연산자)
어디운영자토큰은의 구문 규칙을 따릅니다.섹션 4.1.3또는 핵심 단어 중 하나입니다and, 또는not또는 양식의 자격을 갖춘 연산자 이름입니다.
연산자 (스키마.OperatorName)

어떤 특정 사업자가 존재하고 단독인지 여부 또는 이진은 시스템 또는 사용자.토토 핫 : 문서 : 9.0 : 기능 및 연산자내장 연산자를 설명합니다.

4.2.6. 함수 호출

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

function_name([스포츠 토토 결과[, 스포츠 토토 결과 ... ]])

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

SQRT (2)

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

인수는 선택적으로 이름이 첨부 될 수 있습니다. 보다무지개 토토 : 문서 : 9.0 : 무지개 토토 호출세부.

4.2.7. 골재 스포츠 토토 결과

an집계 스포츠 토토 결과행에 걸쳐 집계 기능의 적용 쿼리에 의해 선택되었습니다. 집계 함수는 다중 감소를 감소시킵니다 합 또는 평균과 같은 단일 출력 값에 대한 입력 입력. 집계 스포츠 토토 결과의 구문은 수행원:

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 (*)집계 기능.

대부분의 집계 함수는 널 입력을 무시하여 행 스포츠 토토 결과 수율 중 하나 이상이 NULL이 폐기. 그렇지 않은 한 이것은 사실이라고 가정 할 수 있습니다 모든 내장 골재에 대해 지정됩니다.

예를 들어count (*)총 입력 행 수;count (f1)입력 행의 수를 생산합니다F1이후count널 무시; 그리고count (별개의 f1)별개의 수를 산출합니다 의 비 널 값F1.

일반적으로 입력 행은 집계 함수에 공급됩니다. 지정되지 않은 순서로. 많은 경우에 이것은 중요하지 않습니다. 예를 들어,Min생산 입력을받는 순서에 관계없이 동일한 결과. 그러나 일부 집계 함수 (예 :array_aggStri스포츠 토토 결과_agg) 의존하는 결과를 생성합니다 입력 행의 순서. 그러한 집계를 사용할 때 선택 사항Order_By_Clause원하는 순서를 지정하는 데 사용할 수 있습니다. 그만큼Order_By_Clause와 동일한 구문이 있습니다 쿼리 레벨주문 by조항 설명토토 꽁 머니 : 문서 : 9.0 : 정렬 행, 스포츠 토토 결과은 항상 스포츠 토토 결과 일 뿐이라는 것을 제외하고 출력-컬럼 이름 또는 숫자가 될 수 없습니다. 예를 들어:

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

다중 연계 집계 함수를 다룰 때,주문 by절은 간다 모든 집계 인수 후에. 예를 들어, 이것을 작성하십시오 :

표에서 stri스포츠 토토 결과_agg (a, ','주문)를 선택하십시오.

그렇지 않습니다 :

테이블에서 stri스포츠 토토 결과_agg (a, ',')를 선택하십시오.  -- 잘못된

후자는 구문 적으로 유효하지만 전화를 나타냅니다. 2 인 단일 연계 골재 기능의주문 by키 (두 번째는 오히려 열쇠입니다 상수이기 때문에 쓸모가 없음).

if별도의지정되어 있습니다 에 추가Order_By_Clause, 그런 다음 모든주문 by스포츠 토토 결과이어야합니다 집계의 정기적 인 논증을 일치시킵니다. 즉, 당신은 할 수 없습니다 에 포함되지 않은 스포츠 토토 결과식을 정렬하십시오.별도의목록.

참고 :두 가지를 지정하는 능력별도의주문 에 의해집계 함수의 경우PostgreSQL확장.

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

집계 스포츠 토토 결과식은 결과 목록에만 나타날 수 있습니다. 또는a 조항select명령. 다른 사람에게는 금지되어 있습니다 조항, 예 :여기서조항은 결과 전에 논리적으로 평가됩니다 골재가 형성됩니다.

집계 스포츠 토토 결과식이 하위 쿼리에 나타날 때 (참조섹션 4.2.10andPostgreSQL :), 집계는 일반적으로 행을 통해 평가됩니다. 하위 쿼리. 그러나 집계가있는 경우 예외가 발생합니다 인수에는 외부 수준 변수 만 포함됩니다 : 집계 그런 다음 가장 가까운 외부 레벨에 속하며 평가됩니다. 그 쿼리의 행 위에. a로서의 응집체 발현 그런 다음 전체가 나타나는 하위 쿼리의 외부 참조입니다. 그에 대한 한 가지 평가보다 상수 역할을합니다. 하위 퀴어. 결과에만 나타나는 제한 목록 또는조항이 적용됩니다 집계가 속한 쿼리 레벨에 대한 존중.

4.2.8. 창 함수 호출

a창 함수 호출일부 부분에 걸쳐 응집체 유사 함수의 적용 쿼리에 의해 선택된 줄의. 일반 집계와 달리 함수 호출, 이것은 선택한 그룹의 그룹화와 관련이 없습니다. 단일 출력 행으로의 행 - 각 행은 쿼리 출력. 그러나 창 함수가 스캔 할 수 있습니다 현재 행 그룹의 일부가 될 모든 행 그룹화 사양에 따르면 (파티션 by목록) 창 함수 호출. 창 함수 호출의 구문은 수행원:

function_name([스포츠 토토 결과[, 스포츠 토토 결과 ... ]]) 오버Window_name
function_name([스포츠 토토 결과[, 스포츠 토토 결과 ... ]]) 오버 (Window_definition)function_name( *) 오버Window_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다음
무한한 추종

여기,스포츠 토토 결과자체가 아닌 값 스포츠 토토 결과식에는 창이 포함되어 있습니다 기능 호출. 그만큼파티션 by주문 by목록은 본질적으로 있습니다 동일한 구문 및 의미론그룹 byand주문 by전체의 조항 그들의 스포츠 토토 결과은 항상 단지라는 것을 제외하고 쿼리 스포츠 토토 결과식 및 출력 열 이름 또는 숫자가 될 수 없습니다.Window_namea에 대한 참조입니다 쿼리에 정의 된 지명 된 창 사양절. 또는 전체Window_definition내부에 제공 될 수 있습니다 이름을 정의하는 것과 동일한 구문을 사용하는 괄호 의 창절; 참조select참조 페이지 세부. 그것을 지적 할 가치가 있습니다오버 wname정확히 같지 않습니다Over (wname); 후자는 복사를 의미합니다 창 정의를 수정하고 참조 창 사양에는 프레임 조항이 포함됩니다.

theframe_clause지정합니다 를 구성하는 행 세트창 액자, 프레임에 작용하는 창 함수의 경우 전체 파티션 대신. 만약에frame_end생략 된 기본값현재 행. 제한은frame_start무한하지 않은 추종, frame_end미리 알려지지 않은frame_end선택은 이전에 나타날 수 없습니다 위의 목록보다frame_start선택 - 예를 들어현재 행과 사이의 범위value선행허용되지 않습니다. 그만큼 기본 프레임 옵션은범위를 결합하지 않습니다 선행,범위 미리 사전과 현재 행 사이; 그것은 그것을 설정한다 파티션의 모든 행이 될 프레임은 현재 행의 마지막 동료에서주문 에 의해주문 (없으면 모든 행을 의미합니다주문 by). 일반적으로미리 알려지지 않은| 프레임이 시작되는 것을 의미합니다 파티션의 첫 번째 줄로, 그리고 마찬가지로무한한 추종는 프레임이 끝나는 것을 의미합니다 파티션의 마지막 줄로 (범위또는모드). 안에모드,현재 열프레임이 전류로 시작되거나 끝나는 것을 의미합니다. 열; 그러나에서범위모드를 의미합니다 프레임은 현재 행의 첫 번째 또는 마지막으로 시작되거나 끝납니다. 의 피어주문 by주문. 그만큼value 선행value follow케이스는 현재 허용됩니다모드. 그들은 프레임이 시작된다는 것을 나타냅니다 또는 전류 전후에 많은 행이있는 행으로 끝납니다. 열.value정수 여야합니다 변수가 포함되지 않은 스포츠 토토 결과, 집계 함수, 또는 창 함수. 값은 무효가되어서는 안됩니다. 그러나 현재 행 자체를 선택하는 0이 될 수 있습니다.

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

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

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

창 함수에 대한 자세한 내용은 찾을 수 있습니다.480060000048006000006000롤 토토48006000006000004800500004800600000600000480048005000000006, 섹션 9.19, 섹션 7.2.4.

4.2.9. 타입 캐스트

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

cast (스포츠 토토 결과as타입)스포츠 토토 결과::타입

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

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

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

함수와 같은 구문 :

typename(스포츠 토토 결과)

그러나 이것은 이름도있는 유형에 대해서만 작동합니다. 함수 이름으로 유효합니다. 예를 들어,이중 정밀이런 식으로 사용할 수는 없지만 동등한float8can. 또한, 이름간격, Time타임 스탬프can 이 패션에서만 두 번 인용되는 경우에만 사용됩니다. 구문 갈등. 따라서 함수와 같은 사용 캐스트 구문은 불일치로 이어질 것입니다 피해.

참고 :함수와 같은 구문은 실제로 a입니다 기능 호출. 두 표준 캐스트 구문 중 하나 일 때 런타임 변환을 수행하는 데 사용되며 내부적으로 등록 된 기능을 호출하여 변환을 수행하십시오. 에 의해 컨벤션에서, 이러한 전환 기능은 동일한 이름을 가지고 있습니다 출력 유형으로"기능형 구문"기본 변환 함수의 직접적인 호출. 분명히 이것은 휴대용이 아닙니다 응용 프로그램은 의존해야합니다. 자세한 내용은 참조PostgreSQL : 문서 : 9.0 : 무지개 토토 생성.

4.2.10. 스칼라 서브 쿼리

스칼라 하위 쿼리는 평범합니다select정확히 반환되는 괄호 안의 쿼리 열 하나의 열이 하나입니다. (보다메이저 토토 사이트 : 문서 : 9.0 : 쿼리쿼리 작성에 대한 정보.)select쿼리가 실행되고 단일이 반환됩니다 값은 주변 값 스포츠 토토 결과식에 사용됩니다. 그것은 오류는 둘 이상의 행 이상을 반환하는 쿼리를 사용하는 오류입니다. 스칼라 하위 쿼리로서 하나의 열보다. (그러나 만약 특별한 실행, 하위 쿼리는 행이없고, 오류; 스칼라 결과는 널로 사용됩니다.) 하위 쿼리는 주변 쿼리의 변수를 참조하여 작동합니다. 하위 쿼리의 하나의 평가 중 상수로. 보다 또한PostgreSQL : 문서 : 9.0 : 메이저 토토 사이트 퀘리 표현식하위 쿼리와 관련된 기타 스포츠 토토 결과.

예를 들어, 다음은 가장 큰 도시 인구를 찾습니다 각 주에서 :

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

4.2.11. 정렬 생성자

배열 생성자는 배열을 작성하는 스포츠 토토 결과식입니다. 회원 요소에 대한 값을 사용한 값. 간단한 배열 생성자는 핵심 단어로 구성됩니다배열, 왼쪽 정사각형 브래킷[, 스포츠 토토 결과 목록 (쉼표로 구분) 배열 요소 값과 마지막으로 오른쪽 정사각형 까치발]. 예를 들어:

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

기본적으로 배열 요소 유형은 공통 유형의 멤버 스포츠 토토 결과식, for와 동일한 규칙을 사용하여 결정Union또는CASE구성 (참조PostgreSQL :). 명시 적으로 캐스팅하여 이것을 무시할 수 있습니다 원하는 유형에 대한 배열 생성자 (예 :

배열 선택 [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

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

배열 선택 [] :: integer [];
 정렬
-------

결과에서 배열을 구성 할 수도 있습니다. 하위 퀘스트의. 이 형식으로 배열 생성자가 작성됩니다 키워드배열괄호 화 된 (괄호 안) 하위 쿼리. 예를 들어:

배열을 선택하십시오 ( 'bytea%'와 같은 Proname과 같은 PG_PROC에서 OID를 선택);
                          ?열?
----------------------------------------------------------------------------------
 2011,1954,1948,1952,1951,1244,1950,2005,1949,1953,2006,31

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

|배열항상 하나부터 시작합니다. 자세한 내용 배열에 대한 정보, 참조PostgreSQL :.

4.2.12. 행 생성자

행 생성자는 행 값을 구축하는 스포츠 토토 결과식입니다. (복합 값이라고도 함) 회원의 값 사용 전지. 행 생성자는 키워드로 구성됩니다Row, 왼쪽 괄호, 0 이상 행 필드 값에 대한 스포츠 토토 결과식 (쉼표로 구분). 마지막으로 올바른 괄호. 예를 들어:

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

키워드Row옵션은 다음과 같습니다 목록에는 둘 이상의 스포츠 토토 결과이 있습니다.

행 생성자는 구문을 포함 할 수 있습니다RowValue.*, 행의 요소 목록으로 확장됩니다. 값, 발생하는 것처럼.*구문은 A의 최상위 레벨에서 사용됩니다select목록. 예를 들어, 표t열이 있습니다F1F2, 동일합니다 :

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

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

기본적으로 arow스포츠 토토 결과식은 익명 레코드 유형입니다. 필요한 경우 이름이 지정된 합성 유형으로 캐스트 될 수 있습니다. 테이블의 행 유형 또는로 만든 복합 유형유형 생성 AS. 명백한 캐스트가 할 수도 있습니다 모호성을 피하기 위해 필요합니다. 예를 들어:

테이블 생성 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 null또는그렇지 않습니다 널, 예 :

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

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

자세한 내용은 참조섹션 9.21. 행 생성자 에서 논의 된대로 하위 쿼리와 관련하여 사용할 수 있습니다.PostgreSQL : 문서 : 9.0 : 메이저 토토 사이트 퀘리 표현식.

4.2.13. 스포츠 토토 결과 평가 규칙

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

스포츠 토토 결과의 결과가있을 수 있다면 그것의 일부만 평가하여 결정한 다음 다른 부분을 평가하여 결정합니다. 하위 스포츠 토토 결과은 전혀 평가되지 않을 수 있습니다. 예를 들어, if 한 사람은 다음과 같이 썼다 :

true 또는 somefunc (); 선택

thesomefunc ()전혀 부름받지 않습니다. 하나도 마찬가지입니다 썼다 :

section nomefunc () 또는 true;를 선택하십시오.

이것은 왼쪽에서 오른쪽과 동일하지 않다는 점에 유의하십시오"단락"47866_47938

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

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

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

하지만 안전합니다 :

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

aCASE이것에 사용 된 구성 패션은 최적화 시도를 물리 칠 것이므로 필요할 때 완료되었습니다. (이 특별한 예에서는 그렇습니다 글을 쓰면 문제를 회피하는 것이 좋습니다y 1.5*x대신.)

CASE는 그런 치료법이 아닙니다 그러나 문제. 기술의 하나의 한계 위의 상수의 조기 평가를 막지 않는다는 것입니다. 하위 스포츠 토토 결과. 에 설명 된대로섹션 35.6, 함수 및 사업자 표시불변할 수 있습니다 쿼리가있을 때가 아니라 계획된시기에 평가 실행. 예를 들어

x 0이면 x 0을 선택하여 x 1/0 끝 탭에서 1/0을 선택하십시오.

플래너는 일정한 서브 스포츠 토토 결과을 단순화하려고합니다 테이블의 모든 줄은x 0그게else팔은 절대되지 않을 것입니다 런 타임에 입력.

그 특정 예는 바보처럼 보일 수 있지만 관련이있을 수 있습니다 상수를 분명히 포함하지 않는 경우가 발생할 수 있습니다 함수 값 이후 함수 내에서 실행됩니다 인수 및 로컬 변수는 다음과 같이 쿼리에 삽입 할 수 있습니다. 계획 목적을위한 상수. 이내에pl/pgsql함수, 예를 들어를 사용합니다if-the-else진술 위험한 계산을 보호하는 것 에서case스포츠 토토 결과.

같은 종류의 또 다른 한계는 A입니다.CASE집계의 평가를 방지 할 수 없습니다 골재 스포츠 토토 결과이기 때문에 스포츠 토토 결과은 그 안에 포함되어 있습니다 a의 다른 스포츠 토토 결과보다 먼저 계산됩니다.selectList 또는조항이 고려됩니다. 예를 들어, 다음 쿼리는 할 수 있습니다 겉보기에도 겉보기에도 영구 오류가 발생합니다 그것에 대해 보호 :

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

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