다음과 같이 일반적인 비교 연산자를 사용할 수 있습니다.표 9.1.
표 9.1. 비교 연산자
| 운영자 | 설명 |
|---|---|
< |
미만 |
|
보다 큼 |
<= |
이하 |
= |
보다 크거나 같음 |
= |
같음 |
<또는!= |
같지 않음 |
그!=연산자는 다음으로 변환됩니다.<파서 단계에서. 구현이 불가능합니다.!=그리고<다른 작업을 수행하는 젠 토토.
비교 젠 토토는 모든 관련 데이터 유형에 사용할 수 있습니다. 모든 비교 젠 토토는 유형의 값을 반환하는 이항 젠 토토입니다.부울; 같은 표현1 < 2 < 3유효하지 않습니다(없기 때문에<부울 값을 비교하는 연산자3).
또한 다음과 같이 몇 가지 비교 술어가 있습니다.표 9.2. 이는 젠 토토와 매우 유사하게 동작하지만 SQL 표준에서 요구하는 특수 구문이 있습니다.
표 9.2. 비교 술어
| 술어 | 설명 |
|---|---|
a 사이 x 그리고 y |
사이 |
a 다음 사이 아님 x 그리고 y |
사이가 아님 |
a 대칭 사이 x 그리고 y |
사이, 비교값 정렬 후 |
a 대칭이 아님 x 그리고 y |
사이 아님, 비교 값 정렬 후 |
a 다음과 구별됨 b |
같지 않음, null을 일반 값처럼 처리 |
a 다음과 다르지 않습니다 b |
같음, null을 일반 값처럼 처리 |
표현 NULL임 |
널임 |
표현 NULL이 아닙니다 |
널이 아닙니다 |
표현 ISNULL |
null임(비표준 구문) |
표현 NOTNULL |
null이 아닙니다(비표준 구문) |
boolean_expression 사실입니다 |
사실입니다 |
boolean_expression 사실이 아님 |
거짓이거나 알 수 없음 |
boolean_expression 거짓입니다 |
거짓입니다 |
boolean_expression 거짓이 아닙니다 |
참이거나 알 수 없음 |
boolean_expression 알 수 없음 |
알 수 없음 |
boolean_expression 알 수 없는 것이 아님 |
참 또는 거짓입니다 |
a사이x그리고y
다음과 동일함
a=x그리고a<=y
알아두세요사이끝점 값을 범위에 포함된 것으로 처리합니다.다음 사이 아님반대 비교를 합니다:
a다음 사이 아님xANDy
다음과 동일함
a<x또는ay
대칭 사이다음과 같습니다사이단, 왼쪽에 있는 인수에 대한 요구 사항은 없습니다.그리고오른쪽 인수보다 작거나 같습니다. 그렇지 않은 경우 두 인수가 자동으로 교환되므로 비어 있지 않은 범위가 항상 암시됩니다.
일반적인 비교 젠 토토는 null을 생성합니다(의미“알 수 없음”), 입력 중 하나가 null인 경우 true 또는 false가 아닙니다. 예를 들어,7 = NULL그렇듯이 null을 반환합니다7 < NULL. 이 동작이 적합하지 않은 경우에는IS [아님] 다음과 다름술어:
a다음과 구별됨ba다음과 다르지 않습니다b
널이 아닌 입력의 경우,다음과 구별됨다음과 같습니다<젠 토토. 그러나 두 입력이 모두 null이면 false를 반환하고, 하나만 null이면 true를 반환합니다. 마찬가지로,다음과 다르지 않습니다동일함=null이 아닌 입력의 경우, 두 입력이 모두 null이면 true를 반환하고, 하나만 null이면 false를 반환합니다. 따라서 이러한 술어는 null이 아닌 일반 데이터 값인 것처럼 효과적으로 작동합니다.“알 수 없음”.
값이 null인지 아닌지 확인하려면 조건자를 사용하십시오:
표현NULL입니다표현NULL이 아닙니다
또는 동등하지만 비표준인 술어:
표현ISNULL표현NOTNULL
도아님쓰기왜냐하면표현= NULLNULL아닙니다“같음” NULL. (null 값은 알 수 없는 값을 나타내며, 알 수 없는 두 값이 같은지 여부는 알 수 없습니다.)
일부 응용프로그램에서는 이를 예상할 수 있습니다.다음의 경우 true를 반환합니다.표현= NULL표현null 값으로 평가됩니다. SQL 표준을 준수하도록 이러한 애플리케이션을 수정하는 것이 좋습니다. 그러나 그렇게 할 수 없는 경우에는transform_null_equals구성 변수를 사용할 수 있습니다. 활성화된 경우,PostgreSQL변환할 것이다x = NULL절x는 NULL입니다..
만약에표현행 값이면NULL임행 표현식 자체가 null이거나 행의 모든 필드가 null인 경우 true입니다. 반면NULL이 아닙니다은 행 표현식 자체가 null이 아니고 모든 행의 필드가 null이 아닌 경우 true입니다. 이러한 행동으로 인해,NULL입니다그리고NULL이 아닙니다행 값 표현식에 대해 항상 반대 결과를 반환하지는 않습니다. 특히 null 필드와 null이 아닌 필드를 모두 포함하는 행 값 식은 두 테스트 모두에 대해 false를 반환합니다. 어떤 경우에는 다음과 같이 작성하는 것이 더 나을 수도 있습니다.행 NULL과 구별됨또는행 NULL과 구별되지 않음, 이는 행 필드에 대한 추가 테스트 없이 전체 행 값이 null인지 여부를 간단히 확인합니다.
boolean_expression사실입니다boolean_expression사실이 아님boolean_expression거짓입니다boolean_expression거짓이 아닙니다boolean_expression알 수 없음boolean_expression알 수 없는 것이 아님
이것은 피연산자가 null인 경우에도 항상 true 또는 false를 반환하며 결코 null 값을 반환하지 않습니다. null 입력은 논리값으로 처리됩니다.“알 수 없음”. 참고하세요알 수 없음그리고알 수 없는 것이 아님실질적으로 다음과 동일합니다NULL입니다그리고NULL이 아닙니다, 단, 입력 표현식은 부울 유형이어야 합니다.
다음과 같이 일부 비교 관련 기능도 사용할 수 있습니다.표 9.3.
표 9.3. 비교 함수