이 섹션에서는 값 그룹간에 다중 비교를위한 몇 가지 특수 구성을 설명합니다. 이러한 형식은 이전 섹션의 하위 쿼리 형식과 구문 적으로 관련되어 있지만 하위 쿼리는 포함되지 않습니다. 배열 하위 표현과 관련된 양식은입니다.PostgreSQL확장; 나머지는SQL-compliant. 이 섹션에 기록 된 모든 표현식 양식은 부울 (True/False) 결과를 반환합니다.
in
표현
in (value
[, ...])
오른쪽은 괄호로 된 표현식 목록입니다. 결과는입니다.“true”왼쪽 표현의 결과가 오른쪽 표현과 같으면. 이것은에 대한 속기 표기법입니다.
표현
=value1
또는표현
=value2
또는 ...
왼쪽 표현이 NULL을 생산하거나 동일한 오른쪽 값이없고 적어도 하나의 오른쪽 표현이 NULL을 생성하는 경우의 결과가in
구성은 거짓이 아닌 null이됩니다. 이것은 널 값의 부울 조합에 대한 SQL의 정상 규칙에 따른 것입니다.
표현
in (value
[, ...])
오른쪽은 괄호로 된 표현 목록입니다. 결과는입니다.“true”왼쪽 표현의 결과가 모든 오른쪽 표현식에 불평등 한 경우. 이것은에 대한 속기 표기법입니다.
표현
<value1
및표현
<value2
및 ...
왼쪽 표현이 NULL을 생성하거나 동일한 오른쪽 값이없고 적어도 하나의 오른쪽 표현이 NULL을 생성하는 경우의 결과가에 유의하십시오.구성은 순진하게 기대할 수 있듯이 사실이 아닙니다. 이것은 널 값의 부울 조합에 대한 SQL의 정상 규칙에 따른 것입니다.
x y
NOT (x in y)
모든 경우에. 그러나 Null 값은 작업 할 때 초보자를 시작할 가능성이 훨씬 높습니다보다 작업 할 때보 다
in
. 가능하면 상태를 긍정적으로 표현하는 것이 가장 좋습니다.
any
/일부
(배열)표현
운영자
Any (배열 표현
)표현
운영자
일부 (배열 표현
)
오른쪽은 괄호화 된 표현식으로 배열 값을 생성해야합니다. 왼쪽 표현식이 평가되고 주어진를 사용하여 배열의 각 요소와 비교됩니다.운영자
, 부울 결과를 산출해야합니다. 의 결과any
is“true”실제 결과가 얻은 경우. 결과는입니다.“거짓”실제 결과가 발견되지 않은 경우 (배열에 요소가없는 경우 포함).
배열 표현식이 널 배열을 생성하면 결과는any
null이됩니다. 왼쪽 표현이 NULL을 생성하면의 결과는any
는 일반적으로 무효입니다 (비 스트릭 와이즈 토토 연산자는 다른 결과를 얻을 수 있습니다). 또한 오른쪽 배열에 널 요소가 포함되어 있고 진정한 와이즈 토토 결과가 없으면 결과가any
는 거짓이 아닌 null이됩니다 (다시 엄격한 비교 연산자를 가정). 이것은 널 값의 부울 조합에 대한 SQL의 정상 규칙에 따른 것입니다.
일부
동의어입니다Any
.
all
(배열)표현
운영자
ALL (배열 표현
)
오른쪽은 괄호화 된 표현식으로 배열 값을 생성해야합니다. 왼쪽 표현식이 평가되고 주어진를 사용하여 배열의 각 요소와 비교됩니다.운영자
, 부울 결과를 산출해야합니다. 의 결과all
is“true”모든 와이즈 토토가 True를 산출하는 경우 (배열에 요소가없는 경우 포함). 결과는입니다.“거짓”잘못된 결과가 발견 된 경우.
배열 표현식이 널 배열을 생성하면 결과는all
null이됩니다. 왼쪽 표현이 NULL을 생성하면의 결과는all
는 일반적으로 무일하게 널입니다 (비 스트릭 와이즈 토토 연산자는 다른 결과를 얻을 수 있습니다). 또한 오른쪽 배열에 널 요소가 포함되어 있고 잘못된 와이즈 토토 결과가없는 경우 결과가all
는 사실이 아니라 널이됩니다 (다시 엄격한 비교 연산자를 가정). 이것은 널 값의 부울 조합에 대한 SQL의 정상 규칙에 따른 것입니다.
row_constructor
운영자
row_constructor
각 측면은에 설명 된대로 행 생성자입니다.섹션 4.2.13. 두 행 생성자는 같은 수의 필드를 가져야합니다. 주어진운영자
각각의 해당 필드 쌍에 적용됩니다. (필드는 다른 유형 일 수 있으므로, 이는 각 쌍에 대해 다른 특정 연산자를 선택할 수 있음을 의미합니다.) 선택한 모든 연산자는 일부 B-Tree Operator 클래스의 구성원이거나 AN의 부정관이어야합니다.=
B- 트리 연산자 클래스의 구성원, 즉 행 생성자 와이즈 토토가 가능할 때만 가능하다는 것을 의미합니다.운영자
is=
, <
, <
, <=
, , 또는
=
또는 이들 중 하나와 유사한 의미론이 있습니다.
the=
and<
케이스는 다른 사례와 약간 다르게 작동합니다. 해당하는 모든 멤버가 무감각하고 같으면 두 행이 동일하게 간주됩니다. 해당 구성원이 널이없고 불평등 한 경우 행은 불평등합니다. 그렇지 않으면 행 와이즈 토토 결과가 알려지지 않았습니다 (null).
용<
, <=
, and
=
케이스, 행 요소는 왼쪽에서 오른쪽으로 와이즈 토토되며, 불평등하거나 무효 한 요소 쌍이 발견 되 자마자 중지됩니다. 이 요소 중 하나 중 하나가 NULL 인 경우 행 와이즈 토토 결과는 알려지지 않았습니다 (NULL). 그렇지 않으면이 요소 쌍을 와이즈 토토하면 결과가 결정됩니다. 예를 들어,행 (1,2, null) <Row (1,3,0)
세 번째 요소 쌍이 고려되지 않기 때문에 널이 아닌 True를 생산합니다.
이전PostgreSQL8.2,<
, <=
, and
=
사례는 SQL 사양에 따라 처리되지 않았습니다. 비교와 같은 비교row (a, b) <row (c, d)
|a <c 및 b <d
올바른 동작은에 해당하는 반면a <c 또는 (a = c 및 b <d)
.
row_constructor
row_constructor
이 구성은 A와 유사합니다<
행 비교이지만 널 입력에 대해서는 널을 생성하지 않습니다. 대신, 모든 널 값은 널 널 값이 아닌 값과는 별다른 것으로 간주되며, 두 개의 널은 동일하지 않은 것으로 간주됩니다 (구별되지 않음). 따라서 결과는 참이거나 거짓이거나 결코 널을 null하지 않을 것입니다.
row_constructor
|row_constructor
이 구성은 A와 유사합니다=
행 비교이지만 널 입력에 대해서는 널을 생성하지 않습니다. 대신, 모든 널 값은 널 널 값이 아닌 값과는 별다른 것으로 간주되며, 두 개의 널은 동일하지 않은 것으로 간주됩니다 (구별되지 않음). 따라서 결과는 항상 진실 또는 거짓이 될 것입니다.
레코드
운영자
레코드
SQL 사양은 결과가 두 개의 null 값 또는 null과 null을 비교하는 데 의존하는 경우 RETURN NULL과 ROW-WISE 비교가 필요합니다..PostgreSQL두 행 생성자의 결과를 와이즈 토토할 때만 (.섹션 9.24.5) 또는 행 생성자를 하위 퀘스트의 출력과 비교 (와 같이PostgreSQL : 문서 : 14 : 9.23. 하위 무지개 토토 표현). 두 개의 복합 유형 값이 와이즈 토토되는 다른 상황에서는 두 개의 널 필드 값이 동일하게 간주되고 널은 널보다 큰 것으로 간주됩니다. 복합 유형에 대한 일관된 정렬 및 인덱싱 동작을 갖기 위해서는 필요합니다.
각 측면이 평가되며 행과 와이즈 토토됩니다. 복합 유형 와이즈 토토는 일 때 허용됩니다.운영자
is=
, <
, <
, <=
, 또는
=
또는 이들 중 하나와 유사한 의미를 가지고 있습니다. (구체적으로 말하면, 연산자는 B- 트리 연산자 클래스의 구성원 인 경우 행 비교 연산자가 될 수 있습니다.=
B- 트리 연산자 클래스의 구성원) 위의 연산자의 기본 동작은와 동일합니다.|
행 생성자의 경우 (참조섹션 9.24.5).
기본 B- 트리 연산자 클래스가없는 요소를 포함하는 행의 매칭을 지원하려면 다음 연산자는 복합 유형 비교를 위해 정의됩니다.*=
, *<
, *<
, *<=
, *
및* =
. 이 연산자는 두 행의 내부 이진 표현을 비교합니다. 평등 연산자와의 두 행을 비교하더라도 두 행이 다른 바이너리 표현을 가질 수 있습니다. 이러한 비교 연산자 하에서 행의 순서는 결정적이지만 그렇지 않으면 의미가 없습니다. 이 연산자는 구체화 된 뷰에 내부적으로 사용되며 복제 및 B- 트리 중복 제거와 같은 다른 특수 목적에 유용 할 수 있습니다 (참조섹션 64.4.3). 그래도 일반적으로 쿼리를 작성하는 데 유용하지는 않습니다.
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면