이 섹션에서는 여러 특수 구성을 설명합니다 값 그룹간에 다중 비교를합니다. 이 형태 이전의 하위 쿼리 형태와 구문 적으로 관련이 있습니다. 섹션이지만 하위 쿼리가 포함되지 않습니다. 배열과 관련된 양식 하위 표현은PostgreSQL확장; 나머지는SQL-공동. 모든 표현식 형태 이 섹션에 기록 된 반환 부울 (True/False) 결과.
표현in (value[, ...])
오른쪽은 괄호로 된 스칼라 목록입니다 표현. 결과는입니다."True"if 왼쪽 표현의 결과는 오른쪽 표현. 이것은에 대한 속기 표기법입니다.
표현=value1또는표현=value2또는 ...
왼쪽 표현이 널 생산되는 경우에 주목하십시오. 동일한 오른쪽 값이없고 적어도 하나가 있습니다. 오른쪽 표현은 널을 생성합니다.in구성은 false가 아닌 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"잘못된 결과가 발견 된 경우.
배열 표현식이 널 배열을 생성하면 결과는all왼쪽이라면 표현식은 널을 생성하고의 결과를 얻습니다.all은 일반적으로 무효입니다 비교 연산자는 다른 결과를 얻을 수 있습니다). 또한 오른쪽 스포츠 토토 결과에 Null 요소가 포함되어 있고 허위 비교 결과가 얻어지고 결과는16999_17004는 사실이 아니라 null이 될 것입니다 (다시, a 엄격한 비교 연산자). 이것은 SQL에 따른 것입니다 널 값의 부울 조합에 대한 정상적인 규칙.
row_constructor 운영자 row_constructor
각 측면은 행 생성자입니다.섹션 4.2.13. 두 행 값은 동일한 수의 것을 가져야합니다. 전지. 각 측면은 평가되며 경향별로 비교됩니다. 행 비교는에 허용됩니다운영자is=, <, <, <=, 또는 =또는 의미 중 하나와 유사한 의미. (구체적으로, 운영자 B- 트리의 구성원 인 경우 행 비교 연산자가 될 수 있습니다. 운영자 클래스, 또는의 부정관입니다.=B- 트리 연산자 클래스의 구성원)
the=and<케이스는 약간 다르게 작동합니다 다른 것들. 두 줄은 모든 경우 동일하게 간주됩니다 해당 구성원은 널이 아니고 동일합니다. 행은입니다 해당 구성원이 무감각하고 불평등 한 경우에는 불평등합니다. 그렇지 않으면 행 비교 결과가 알려져 있지 않습니다 (null).
용<, <=, and =케이스, 행 요소는입니다 왼쪽에서 오른쪽으로 비교하여 불평등하거나 널리 나가 자마자 중지 요소 쌍이 발견됩니다. 이 요소 중 하나 인 경우 NULL, 행 비교의 결과는 알려지지 않았다 (NULL). 그렇지 않으면이 요소 쌍의 비교가 결정됩니다 결과. 예를 들어,행 (1,2, null) < 행 (1,3,0)세 번째 쌍 때문에 널이 아닌 true를 생산합니다 요소의 고려되지 않습니다.
참고 :이전PostgreSQL8.2, The<, <=, and =SQL 당 케이스가 처리되지 않았습니다 사양. 비교와 같은 비교row (a, b) <row (c, d)|a <c 및 b <d올바른 동작은에 해당합니다.a <c 또는 (a = c 및 b <d).
row_constructor|row_constructor
이 구성은 a와 유사합니다.<행 비교이지만 생성되지는 않습니다 널 입력의 경우 널. 대신, 모든 널 값이 고려됩니다 널 값이 아닌 값과 동등하지 않고 두 가지 널은 동등한 것으로 간주됩니다 (구별되지 않음). 따라서 결과는 그럴 것입니다 진실이거나 거짓, 절대 귀찮은 일입니다.
row_constructor|row_constructor
이 구성은 a와 유사합니다.=행 비교이지만 널 입력에 대해서는 널을 생성하지 않습니다. 대신, 모든 널 값은 (별개로) 불평등 한 것으로 간주됩니다 널 널 값이 아닌 값과 두 개의 널이 고려됩니다. 동일 (별개가 아님). 따라서 결과는 항상 그렇습니다 참 또는 거짓, 절대 널
참고 :SQL 사양에는 행이 필요합니다 결과가 의존하는 경우 return null과 비교하십시오 두 개의 널 값 또는 널과 널 비교.PostgreSQL이것 만 수행합니다 두 행 생성자의 결과를 비교할 때 또는 행 생성자를 하위 쿼리의 출력과 비교 안에PostgreSQL : 문서 : 9.1 : 윈 토토 퀘리 표현식). ~ 안에 두 개의 복합 유형 값이있는 다른 컨텍스트 비교하면 두 개의 널 필드 값이 동일하게 간주되고 NULL은 NULL보다 큰 것으로 간주됩니다. 이것은 일관된 정렬 및 인덱싱을 위해서는 필요합니다 복합 유형에 대한 행동.