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