9.20. 범위/다중 토토 꽁 머니 함수 및 연산자#

참조PostgreSQL : 문서 : 17 : 8.17. 롤 토토 유형토토 꽁 머니 유형에 대한 개요입니다.

표 9.56토토 꽁 머니 유형에 사용할 수 있는 특수 연산자를 표시합니다.표 9.57은 다중 토토 꽁 머니 유형에 사용할 수 있는 특수 연산자를 표시합니다. 그 외에도 다음과 같은 일반적인 비교 연산자가 있습니다.표 9.1토토 꽁 머니 및 다중 토토 꽁 머니 유형에 사용할 수 있습니다. 비교 연산자는 먼저 토토 꽁 머니 하한을 기준으로 정렬하고, 해당 값이 동일한 경우에만 상한을 비교합니다. 다중 토토 꽁 머니 연산자는 하나가 동일하지 않을 때까지 각 토토 꽁 머니를 비교합니다. 이는 일반적으로 유용한 전체 순서로 이어지지는 않지만 토토 꽁 머니에 고유 인덱스를 구성할 수 있도록 연산자가 제공됩니다.

표 9.56. 범위 연산자

운영자

설명

아무토토 꽁 머니 @ anyrange부울

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

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

anyrange @ 모든 요소부울

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

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

anyrange <@ anyrange부울

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

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

모든 요소 <@ 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) &< int8range(18,20)t

아무토토 꽁 머니 & anyrange부울

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

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

anyrange -|- anyrange부울

토토 꽁 머니가 인접해 있습니까?

숫자 범위(1.1,2.2) -|- 숫자 범위(2.2,3.3)t

아무토토 꽁 머니 + anyrange아무토토 꽁 머니

범위의 합집합을 계산합니다. 범위는 서로 겹치거나 인접해야 하므로 합집합은 단일 범위가 됩니다(그러나 참조range_merge()).

숫자 토토 꽁 머니(5,15) + 숫자 토토 꽁 머니(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.57. 다중 토토 꽁 머니 연산자

운영자

설명

anymultirange @ anymultirange부울

첫 번째 다중 토토 꽁 머니에 두 번째 다중 토토 꽁 머니가 포함되어 있습니까?

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

anymultirange @ anyrange부울

다중 토토 꽁 머니에 토토 꽁 머니가 포함되어 있습니까?

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

anymultirange @ 모든 요소부울

다중 토토 꽁 머니에 요소가 포함되어 있습니까?

'[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부울

토토 꽁 머니가 다중 토토 꽁 머니에 포함되어 있습니까?

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

모든 요소 <@ anymultirange부울

요소가 다중 토토 꽁 머니에 포함되어 있습니까?

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 아무토토 꽁 머니부울

다중 토토 꽁 머니가 토토 꽁 머니의 오른쪽에 있습니까?

'[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

아무토토 꽁 머니 &< anymultirange부울

토토 꽁 머니가 다중 토토 꽁 머니의 오른쪽으로 확장되지 않습니까?

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

anymultirange & anymultirange부울

첫 번째 다중 토토 꽁 머니가 두 번째 다중 토토 꽁 머니의 왼쪽으로 확장되지 않습니까?

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

모든다중토토 꽁 머니 & anyrange부울

다중 토토 꽁 머니가 토토 꽁 머니의 왼쪽으로 확장되지 않습니까?

'[7,20)'::int8multirange & int8range(5,10)t

anyrange & anymultirange부울

토토 꽁 머니가 다중 토토 꽁 머니의 왼쪽으로 확장되지 않습니까?

int8range(7,20) & '[5,10)'::int8multiranget

다중 토토 꽁 머니 -|- anymultirange부울

다중 토토 꽁 머니가 인접해 있습니까?

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

anymultirange -|- anyrange부울

다중 토토 꽁 머니가 범위에 인접해 있습니까?

'[1.1,2.2)'::nummultirange -|- 숫자 범위(2.2,3.3)t

아무토토 꽁 머니 -|- anymultirange부울

범위가 다중 토토 꽁 머니에 인접해 있습니까?

숫자 범위(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)}


왼쪽/오른쪽/인접 연산자는 빈 범위나 다중 토토 꽁 머니가 포함될 때 항상 false를 반환합니다. 즉, 빈 범위는 다른 범위 앞이나 뒤에 있는 것으로 간주되지 않습니다.

다른 곳에서는 빈 범위와 다중 토토 꽁 머니가 추가 ID로 처리됩니다. 빈 값과 결합된 모든 것은 그 자체입니다. 빈 값을 뺀 것은 그 자체입니다. 빈 다중 토토 꽁 머니에는 빈 범위와 정확히 동일한 점이 있습니다. 모든 범위에는 빈 범위가 포함됩니다. 모든 다중 토토 꽁 머니에는 원하는 만큼의 빈 범위가 포함됩니다.

결과 범위에 두 개의 분리된 하위 범위가 포함되어야 하는 경우 범위 합집합 및 차이 연산자는 실패합니다. 이러한 범위는 표현할 수 없습니다. 다중 토토 꽁 머니 매개변수를 취하고 다중 토토 꽁 머니를 반환하는 합집합과 차이에 대한 별도의 연산자가 있으며, 인수가 서로소인 경우에도 실패하지 않습니다. 따라서 분리될 수 있는 범위에 대한 합집합 또는 차이 연산이 필요한 경우 먼저 범위를 다중 범위로 변환하여 오류를 방지할 수 있습니다.

표 9.58토토 꽁 머니 유형과 함께 사용할 수 있는 함수를 표시합니다.표 9.59다중 토토 꽁 머니 유형과 함께 사용할 수 있는 함수를 표시합니다.

표 9.58. 범위 함수

기능

설명

예제

하위 ( anyrange ) → 모든 요소

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

낮음(숫자 토토 꽁 머니(1.1,2.2))1.1

상위 ( anyrange ) → 모든 요소

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

상위(숫자 범위(1.1,2.2))2.2

비어있음 ( anyrange ) → 부울

토토 꽁 머니가 비어 있습니까?

isempty(숫자 범위(1.1,2.2))f

lower_inc ( anyrange ) → 부울

토토 꽁 머니의 하한이 포함됩니까?

lower_inc(숫자 범위(1.1,2.2))t

upper_inc ( anyrange ) → 부울

토토 꽁 머니의 상한이 포함됩니까?

upper_inc(숫자 범위(1.1,2.2))f

lower_inf ( 아무토토 꽁 머니 ) → 부울

토토 꽁 머니에 하한이 없습니까? (하한값-무한대거짓을 반환합니다.)

lower_inf('(,)'::날짜 범위)t

upper_inf ( anyrange ) → 부울

토토 꽁 머니에 상한이 없습니까? (상한은무한대거짓을 반환합니다.)

upper_inf('(,)'::날짜 범위)t

토토 꽁 머니_병합 ( 아무토토 꽁 머니, 아무토토 꽁 머니 ) → 아무토토 꽁 머니

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

range_merge('[1,2)'::int4range, '[3,4)'::int4range)[1,4)


표 9.59. 다중 토토 꽁 머니 기능

기능

설명

하위 ( anymultirange ) → 모든 요소

다중 토토 꽁 머니의 하한을 추출합니다(NULL다중 토토 꽁 머니가 비어 있으면 하한이 없습니다).

lower('[1.1,2.2)'::nummultirange)1.1

상위 ( anymultirange ) → 모든 요소

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

상위('[1.1,2.2)'::nummultirange)2.2

비어있음 ( anymultirange ) → 부울

다중 토토 꽁 머니가 비어 있습니까?

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

lower_inc ( anymultirange ) → 부울

다중 토토 꽁 머니의 하한이 포함됩니까?

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

upper_inc ( anymultirange ) → 부울

다중 토토 꽁 머니의 상한이 포함됩니까?

upper_inc('[1.1,2.2)'::nummultirange)f

lower_inf ( anymultirange ) → 부울

다중 토토 꽁 머니에는 하한이 없습니까? (하한값-무한대거짓을 반환합니다.)

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

upper_inf ( anymultirange ) → 부울

다중 토토 꽁 머니에는 상한이 없습니까? (상한은무한대거짓을 반환합니다.)

upper_inf('(,)'::datemultirange)t

토토 꽁 머니_병합 ( anymultirange ) → 아무토토 꽁 머니

전체 다중 토토 꽁 머니를 포함하는 가장 작은 범위를 계산합니다.

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

다중 토토 꽁 머니 ( 아무토토 꽁 머니 ) → anymultirange

주어진 범위만 포함하는 다중 토토 꽁 머니를 반환합니다.

다중 토토 꽁 머니('[1,2)'::int4range){[1,2)}

unnest ( anymultirange ) → setofanyrange

다중 토토 꽁 머니를 오름차순으로 일련의 범위로 확장합니다.

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

 [1,2)
 [3,4)

lower_inc, upper_inc, lower_infupper_inf함수는 모두 빈 범위 또는 다중 토토 꽁 머니에 대해 false를 반환합니다.

수정 사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.