이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 9.20. 윈 토토/멀티 랜지 함수 및 연산자버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

9.20. 범위/멀티 랜지 함수 및 연산자#

참조PostgreSQL : 문서 : 개발 : 8.17. 토토 베이 유형토토 캔 유형의 개요는

표 9.58토토 캔 유형에 사용 가능한 특수 연산자를 보여줍니다.표 9.59멀티 랜지 유형에 사용 가능한 특수 연산자를 보여줍니다. 그 외에도에 표시된 일반적인 비교 연산자표 9.1토토 캔 및 멀티 랜지 유형에 사용할 수 있습니다. 비교 연산자는 먼저 토토 캔 하한으로 순서를 지정하고, 그것들이 같으면 상한을 비교합니다. 멀티 랜지 연산자는 각 토토 캔를 비등 할 때까지 비교합니다. 이로 인해 일반적으로 유용한 전체 주문이 발생하지 않지만 운영자는 고유 한 인덱스가 토토 캔에 구성 될 수 있도록 제공됩니다.

표 9.58. 레인지 운영자

운영자

설명

예제

AnyRange @ AnyRange부울

첫 번째 토토 캔에 두 번째 토토 캔가 포함되어 있습니까?

int4Range (2,4) @ int4Range (2,3)t

AnyRange @ Anylement부울

토토 캔에 요소가 포함되어 있습니까?

'[2011-01-01,2011-03-01)':: tsrange @ '2011-01-10':: timestampt

AnyRange <@ AnyRange부울

첫 번째 토토 캔는 두 번째 토토 캔가 포함되어 있습니까?

int4Range (2,4) <@ int4Range (1,7)t

Anylement <@ AnyRange부울

요소가 토토 캔에 포함되어 있습니까?

42 <@ int4Range (1,7)f

AnyRange && AnyRange부울

토토 캔 겹치는 것, 즉 공통 요소가 있습니까?

int8Range (3,7) && int8Range (4,12)T

AnyRange << AnyRange부울

첫 번째 토토 캔가 두 번째 토토 캔의 왼쪽으로 엄격하게 남아 있습니까?

int8Range (1,10) << int8Range (100,110)T

AnyRange AnyRange부울

첫 번째 토토 캔는 두 번째 토토 캔의 오른쪽입니까?

int8Range (50,60) int8Range (20,30)T

AnyRange &< AnyRange부울

첫 번째 토토 캔가 두 번째 오른쪽으로 확장되지 않습니까?

int8Range (1,20) 및 <int8regan (18,20)t

AnyRange & AnyRange부울

첫 번째 토토 캔가 두 번째 왼쪽으로 확장되지 않습니까?

int8Range (7,20) & int8Range (5,10)t

AnyRange -|- AnyRange부울

토토 캔가 인접 해 있습니까?

NumRange (1.1,2.2) - | - NumRange (2.2,3.3)t

AnyRange + AnyRangeAnyRange

토토 캔의 결합을 계산합니다. 토토 캔는 겹치거나 인접해야하므로 노동 조합이 단일 토토 캔가되도록해야합니다 (그러나Range_Merge ()).

NumRange (5,15) + NumRange (10,20)[5,20)

AnyRange * AnyRangeAnyRange

토토 캔의 교차점을 계산합니다.

int8Range (5,15) * int8Range (10,20)[10,15)

AnyRange - AnyRangeAnyRange

토토 캔의 차이를 계산합니다. 두 번째 토토 캔는 차이가 단일 토토 캔가되지 않는 방식으로 첫 번째 토토 캔를 포함해서는 안됩니다.

int8Range (5,15) - int8Range (10,20)[5,10)


표 9.59. 멀티 랜지 연산자

운영자

설명

예제

Anymultirange @ Anymultirange부울

첫 번째 멀티 랜지에는 두 번째 멀티 랜지가 포함되어 있습니까?

'[2,4)':: int4multirange @ '[2,3)':: int4multiranget

Anymultirange @ AnyRange부울

멀티 랜지에는 토토 캔가 포함되어 있습니까?

'[2,4)':: int4multirange @ int4Range (2,3)t

Anymultirange @ Anylement부울

멀티 랜지에는 요소가 포함되어 있습니까?

'[2011-01-01,2011-03-01)':: tsmultirange @ '2011-01-10':: timestampt

AnyRange @ Anymultirange부울

토토 캔에 멀티 랜지가 포함되어 있습니까?

'[2,4)':: int4Range @ '[2,3)':: int4multiranget

Anymultirange <@ Anymultirange부울

첫 번째 멀티 랜지는 두 번째 멀티 랜지가 포함되어 있습니까?

'[2,4)':: int4multirange <@ '[1,7)':: int4multiranget

Anymultirange <@ AnyRange부울

멀티 랜지는 토토 캔에 의해 포함되어 있습니까?

'[2,4)':: int4multirange <@ int4Range (1,7)t

AnyRange <@ Anymultirange부울

Multirange가 포함하는 토토 캔는?

int4Range (2,4) <@ '[1,7)':: int4multiranget

Anylement <@ Anymultirange부울

Multirange에 의해 포함 된 요소입니까?

4 <@ '[1,7)':: int4multiranget

Anymultirange && Anymultirange부울

멀티 랜지 겹침, 즉 공통 요소가 있습니까?

'[3,7)':: int8multirange && '[4,12)':: int8multiranget

Anymultirange && AnyRange부울

멀티 랜지가 토토 캔와 겹치나요?

'[3,7)':: int8multirange && int8Range (4,12)t

AnyRange && Anymultirange부울

토토 캔가 멀티 랜지와 겹치는가?

int8Range (3,7) && '[4,12)':: int8multiranget

Anymultirange << Anymultirange부울

첫 번째 멀티 랜지가 두 번째 멀리 왼쪽으로 남아 있습니까?

'[1,10)':: int8multirange << '[100,110)':: int8multiranget

Anymultirange << AnyRange부울

멀티 랜지가 토토 캔에서 엄격하게 남아 있습니까?

'[1,10)':: int8multirange << int8Range (100,110)t

AnyRange << Anymultirange부울

토토 캔는 멀티 랜지의 왼쪽으로 엄격하게 남아 있습니까?

int8Range (1,10) << '[100,110)':: int8multiranget

Anymultirange Anymultirange부울

첫 번째 멀티 랜지가 두 번째의 오른쪽입니까?

'[50,60)':: int8multirange '[20,30)':: int8multiranget

Anymultirange AnyRange부울

멀티 랜지가 토토 캔의 엄격하게 오른쪽입니까?

'[50,60)':: int8multirange int8Range (20,30)t

AnyRange Anymultirange부울

토토 캔는 멀티 랜지의 엄격한 오른쪽입니까?

int8Range (50,60) '[20,30)':: int8multiranget

Anymultirange &< Anymultirange부울

첫 번째 멀티 랜지가 두 번째 오른쪽으로 확장되지 않습니까?

'[1,20)':: int8multirange & < '[18,20)':: int8multiranget

Anymultirange &< AnyRange부울

멀티 랜지가 토토 캔의 오른쪽으로 확장되지 않습니까?

'[1,20)':: int8multirange & <int8range (18,20)t

AnyRange &< Anymultirange부울

토토 캔가 멀티 랜지 오른쪽으로 확장되지 않습니까?

int8Range (1,20) & < '[18,20)':: int8multiranget

Anymultirange & Anymultirange부울

첫 번째 멀티 랜지가 두 번째 왼쪽으로 확장되지 않습니까?

'[7,20)':: int8multirange & '[5,10)':: int8multiranget

Anymultirange & AnyRange부울

멀티 랜지가 토토 캔의 왼쪽으로 확장되지 않습니까?

'[7,20)':: int8multirange & int8Range (5,10)T

AnyRange & Anymultirange부울

토토 캔가 멀티 랜지의 왼쪽으로 확장되지 않습니까?

int8Range (7,20) & '[5,10)':: int8multirangeT

Anymultirange -|- Anymultirange부울

다중 방향이 인접 해 있습니까?

'[1.1,2.2)':: nummultirange - | - '[2.2,3.3)':: nummultiranget

Anymultirange -|- AnyRange부울

멀티 랜지는 토토 캔에 인접 해 있습니까?

'[1.1,2.2)':: nummultirange- | - NumRange (2.2,3.3)t

AnyRange -|- Anymultirange부울

토토 캔는 멀티 랜지에 인접 해 있습니까?

NumRange (1.1,2.2) - | - '[2.2,3.3)':: Nummultiranget

Anymultirange + AnymultirangeAnymultirange

다중 방해의 결합을 계산합니다. 다중 방향이 겹치거나 인접 해있을 필요는 없습니다.

'[5,10)':: nummultirange + '[15,20)':: nummultirange[5,10), [15,20)

Anymultirange * AnymultirangeAnymultirange

멀티 랜지의 교차점을 계산합니다.

'[5,15)':: int8multirange * '[10,20)':: int8multirange[10,15)

Anymultirange - AnymultirangeAnymultirange

다중 방향의 차이를 계산합니다.

'[5,20)':: int8multirange- '[10,15)':: int8multirange[5,10), [15,20)


왼쪽/오른쪽/인접한 연산자는 빈 토토 캔 또는 멀티 랜지가 관련 될 때 항상 거짓을 반환합니다. 즉, 빈 토토 캔는 다른 토토 캔 전후에 간주되지 않습니다.

다른 곳에서는 빈 토토 캔와 멀티 랭이 부가 적 정체성으로 취급됩니다. 빈 값으로 연합 된 것은 그 자체입니다. 빈 가치를 뺀 것은 그 자체입니다. 빈 다중선은 빈 토토 캔와 정확히 같은 지점을 가지고 있습니다. 모든 토토 캔에는 빈 토토 캔가 포함되어 있습니다. 모든 멀티 랜지에는 원하는만큼 빈 토토 캔가 포함되어 있습니다.

결과 범위에 두 개의 분리 하위 범위를 포함 해야하는 경우 범위 조합 및 차이 연산자는 실패합니다. 연합에 대한 별도의 운영자와 다중 방지 매개 변수를 사용하고 멀티 랜지를 반환하는 차이가 있으며, 논증이 분리되어 있어도 실패하지 않습니다. 따라서 분리 될 수있는 범위에 대한 노조 또는 차이 작업이 필요한 경우 먼저 범위를 멀티 방향으로 캐스팅하여 오류를 피할 수 있습니다.

표 9.60토토 캔 유형과 함께 사용할 수있는 기능을 보여줍니다.표 9.61멀티 랜지 유형과 함께 사용할 수있는 기능을 보여줍니다.

표 9.60. 범위 기능

기능

설명

예제

Lower(AnyRange) →Anylement

토토 캔의 하한을 추출합니다 (NULL범위가 비어 있거나 하한이없는 경우).

하단 (NumRange (1.1,2.2))1.1

어퍼(AnyRange) →Anylement

토토 캔의 상한을 추출합니다 (NULL범위가 비어 있거나 상한이없는 경우).

상단 (NumRange (1.1,2.2))2.2

ISEMPTY(AnyRange) →부울

토토 캔가 비어 있습니까?

isempty (numrange (1.1,2.2))f

lower_inc(AnyRange) →부울

토토 캔의 하한이 포함되어 있습니까?

lower_inc (NumRange (1.1,2.2))t

어퍼_inc(AnyRange) →부울

토토 캔의 상한이 포함되어 있습니까?

어퍼_inc (numrange (1.1,2.2))F

lower_inf(AnyRange) →부울

토토 캔에 하한이 없습니까? (하한-infinity거짓을 반환합니다.)

lower_inf ( '(,)':: Daterange)T

어퍼 _inf(AnyRange) →부울

토토 캔에 상한이 없습니까? (상한Infinity거짓을 반환합니다.)

어퍼_inf ( '(,)':: Daterange)T

Range_Merge(AnyRange, AnyRange) →AnyRange

주어진 두 토토 캔를 모두 포함하는 가장 작은 토토 캔를 계산합니다.

Range_merge ( '[1,2)':: int4Range, '[3,4)':: int4Range)[1,4)


표 9.61. 멀티 랜지 함수

function

설명

예제

Lower(Anymultirange) →Anylement

멀티 랜지의 하한을 추출합니다 (null다중 방송이 비어 있거나 하한이없는 경우).

하위 ( '[1.1,2.2)':: Nummultirange)1.1

어퍼(Anymultirange) →Anylement

멀티 랜지의 상한을 추출합니다 (NULL다중 방송이 비어 있거나 상한이없는 경우).

어퍼 ( '[1.1,2.2)':: nummultirange)2.2

ISEMPTY(Anymultirange) →부울

멀티 랜지가 비어 있습니까?

isempty ( '[1.1,2.2)':: nummultirange)F

lower_inc(Anymultirange) →부울

멀티 랜지의 하한이 포함되어 있습니까?

lower_inc ( '[1.1,2.2)':: nummultirange)T

어퍼_inc(Anymultirange) →부울

멀티 랜지의 상한이 포함되어 있습니까?

어퍼_inc ( '[1.1,2.2)':: nummultirange)f

lower_inf(Anymultirange) →부울

멀티 랜지에는 하한이 없습니까? (하한-infinity거짓을 반환합니다.)

lower_inf ( '(,)':: datemultirange)t

어퍼 _inf(Anymultirange) →부울

멀티 랜지에는 상한이 없습니까? (상한Infinity거짓을 반환합니다.)

어퍼 _inf ( '(,)':: datemultirange)t

Range_merge(Anymultirange) →AnyRange

전체 멀티 랜지를 포함하는 가장 작은 토토 캔를 계산합니다.

Range_merge ( '[1,2), [3,4)':: int4multirange)[1,4)

Multirange(AnyRange) →Anymultirange

주어진 토토 캔 만 포함하는 다중 방지를 반환합니다.

Multirange ( '[1,2)':: int4Range)[1,2)

Unnest(Anymultirange) →anyRange 설정

멀티 랜지를 오름차순 순서로 토토 캔 세트로 확장합니다.

Unnest ( '[1,2), [3,4)':: int4multirange)

[1,2)
 [3,4)

thelower_inc, 어퍼_inc, lower_inf어퍼 _inf함수는 빈 토토 캔 또는 멀티 랜지에 대해 모두 false를 반환합니다.