이 섹션에서는 여러 특수 구성을 설명합니다 값 그룹간에 다중 비교를합니다. 이 형태 이전의 하위 쿼리 형태와 구문 적으로 관련이 있습니다. 섹션이지만 하위 쿼리가 포함되지 않습니다. 배열과 관련된 양식 하위 표현은postgresql확장; 나머지는SQL-공동. 모든 표현식 형태 이 섹션에 기록 된 반환 부울 (True/False) 결과.
표현in (value[, ...])
오른쪽은 괄호로 된 스칼라 목록입니다 표현. 결과는입니다."true"if 왼쪽 표현의 결과는 오른쪽 표현. 이것은에 대한 속기 표기법입니다.
표현=value1또는표현=value2또는 ...
왼쪽 표현이 null을 얻거나 동일한 오른쪽 값이없고 적어도 하나가 있습니다. 오른쪽 표현은 널을 생성합니다.in구성은 거짓이 아닌 null이됩니다. 이것은 안에 있습니다 부울 조합에 대한 SQL의 정상적인 규칙에 따라 널 값.
표현in (value[, ...])
오른쪽은 스칼라의 괄호 목록입니다 표현. 결과는입니다."True"if 왼쪽 표현의 결과는 모든 오른쪽 표현. 이것은에 대한 속기 표기법입니다.
표현 < value1and표현 < value2및 ...
왼쪽 표현이 NULL을 얻거나 동일한 오른쪽 값이없고 적어도 하나가 있습니다. 오른쪽 표현은 널을 생성합니다.구성은 하나가 아닌 사실이 아닙니다 순진하게 기대할 수 있습니다. 이것은 SQL의 정상에 따른 것입니다 널 값의 부울 조합에 대한 규칙.
팁 : x yIS 동등한NOT (x in y)케이스. 그러나 Null 값은 여행 할 가능성이 훨씬 높습니다. 작업 할 때의 초보자보다 작업 할 때보 다in. 최고입니다 가능하면 상태를 긍정적으로 표현합니다.
표현 운영자any (배열 표현)표현 운영자일부 (배열 표현)
오른쪽은 괄호화 된 표현입니다 배열 값을 산출해야합니다. 왼쪽 표현은입니다 평가하고 배열의 각 요소를 사용하여 주어진운영자부울 결과를 낳습니다. 의 결과anyis"True"진정한 결과가 얻어집니다. 결과는입니다."false"실제 결과가 발견되지 않은 경우 (포함 젠 토토에 요소가없는 특별한 경우).
배열 표현식이 널 배열을 생성하면 결과는anynull이됩니다. 왼쪽이라면 표현식은 널을 생성하고의 결과를 얻습니다.Any는 일반적으로 무효입니다 (비 스트라이크이지만 비교 연산자는 다른 결과를 얻을 수 있습니다). 또한 오른쪽 젠 토토에 Null 요소가 포함되어 있고 진정한 비교 결과가 얻어지고 결과는Any는 거짓이 아닌 null이됩니다 (다시, a 엄격한 비교 연산자). 이것은 SQL에 따른 것입니다 널 값의 부울 조합에 대한 정상적인 규칙.
일부동의어입니다Any.
표현 운영자all (배열 표현)
오른쪽은 괄호로 된 표현입니다 배열 값을 산출해야합니다. 왼쪽 표현은입니다 평가하고 배열의 각 요소를 사용하여 주어진운영자부울 결과를 낳습니다. 의 결과allis"True"모두 비교는 사실을 산출합니다 (특별한 경우 포함 젠 토토에는 요소가 없습니다). 결과는입니다."false"잘못된 결과가 발견 된 경우.
배열 표현식이 널 배열을 생성하면 결과는allnull이 될 것입니다. 왼쪽이라면 표현식은 널을 생성하고의 결과를 얻습니다.all는 일반적으로 무효입니다 비교 연산자는 다른 결과를 얻을 수 있습니다). 또한 오른쪽 젠 토토에 Null 요소가 포함되어 있고 허위 비교 결과가 얻어지고 결과는all는 사실이 아니라 null이 될 것입니다 (다시, a 엄격한 비교 연산자). 이것은 SQL에 따른 것입니다 널 값의 부울 조합에 대한 정상적인 규칙.
row_constructor 운영자 row_constructor
각 측면은에 설명 된대로 행 생성자입니다.섹션 4.2.11. 두 행 값은 동일한 수의 것을 가져야합니다. 전지. 각 측면은 평가되며 경향별로 비교됩니다. 행 비교는에 허용됩니다운영자is=, <, <, <=, 또는 =또는 의미 중 하나와 유사한 의미. (구체적으로, 운영자 B- 트리의 구성원 인 경우 행 비교 연산자가 될 수 있습니다. 운영자 클래스, 또는의 부정관입니다.=B-Tree 운영자 클래스의 구성원)
the=and<케이스는 약간 다르게 작동합니다 다른 것들. 두 줄은 모든 경우 동일하게 간주됩니다 해당 구성원은 널이 아니고 동일합니다. 행은입니다 해당 구성원이 무감각하고 불평등 한 경우에는 불평등합니다. 그렇지 않으면 행 비교 결과가 알려져 있지 않습니다 (null).
용<, <=, and =케이스, 행 요소는입니다 왼쪽에서 오른쪽으로 비교하여 불평등하거나 널리 나가 자마자 중지 요소 쌍이 발견됩니다. 이 요소 중 하나 인 경우 NULL, 행 비교의 결과는 알려지지 않았다 (NULL). 그렇지 않으면이 요소 쌍의 비교가 결정됩니다 결과. 예를 들어,행 (1,2, null) < 행 (1,3,0)세 번째 쌍 때문에 null이 아닌 true를 생산합니다 요소의 고려되지 않습니다.
참고 :이전PostgreSQL8.2,<, <=, and =사례는 SQL 당 처리되지 않았습니다 사양. 비교와 같은 비교행 (a, b) <row (c, d)a <c 및 b <d올바른 동작은에 해당합니다.a <c 또는 (a = c 및 b <d).
row_constructorrow_constructor
이 구성은 a와 유사합니다.<행 비교이지만 생성되지는 않습니다 널 입력의 경우 널. 대신, 모든 널 값이 고려됩니다 널 값이 아닌 값과 동등하지 않고 두 가지 널은 동등한 것으로 간주됩니다 (구별되지 않음). 따라서 결과는 그럴 것입니다 항상 참이든 거짓이거나, 절대 널이 아닙니다.
row_constructor|row_constructor
이 구성은 a와 유사합니다.=행 비교이지만 널 입력에 대해서는 널을 생성하지 않습니다. 대신, 모든 널 값은 (별개로) 불평등 한 것으로 간주됩니다 널 널 값이 아닌 값과 두 개의 널이 고려됩니다. 동일 (별개가 아님). 따라서 결과는 항상 그렇습니다 참 또는 거짓, 절대 널