다음과 같이 일반적인 비교 연산자를 사용할 수 있습니다.표 9.1.
표 9.1. 비교 연산자
| 운영자 | 설명 |
|---|---|
데이터 유형 < 데이터 유형 → 부울 |
미만 |
데이터 유형 데이터 유형 → 부울 |
보다 큼 |
데이터 유형 <= 데이터 유형 → 부울 |
보다 작거나 같음 |
데이터 유형 = 데이터 유형 → 부울 |
이상 |
데이터 유형 = 데이터 유형 → 부울 |
같음 |
데이터 유형 < 데이터 유형 → 부울 |
같지 않음 |
데이터 유형 != 데이터 유형 → 부울 |
같지 않음 |
<는에 대한 표준 SQL 표기법입니다.“같지 않음”. !=별칭은 다음으로 변환됩니다.<파싱의 매우 초기 단계입니다. 따라서 구현이 불가능합니다.!=그리고<다른 작업을 수행하는 연산자.
이러한 비교 연산자는 숫자, 문자열 및 날짜/시간 유형을 포함하여 자연 순서가 있는 모든 내장 데이터 유형에 사용할 수 있습니다. 또한 구성요소 데이터 유형이 비교 가능한 경우 배열, 복합 유형 및 범위를 비교할 수 있습니다.
일반적으로 관련 데이터 유형의 값을 비교하는 것도 가능합니다. 예를 들어정수 비긴트작동합니다. 이러한 종류의 일부 사례는 다음에서 직접 구현됩니다.“크로스형”롤 토토 연산자. 그러나 그러한 연산자를 사용할 수 없는 경우 파서는 덜 일반적인 유형을 더 일반적인 유형으로 강제 변환하고 후자의 롤 토토 연산자를 적용합니다.
위에 표시된 것처럼 모든 롤 토토 연산자는 유형의 값을 반환하는 이진 연산자입니다.부울. 따라서 다음과 같은 표현은1 < 2 < 3유효하지 않습니다(없기 때문에<부울 값을 비교하는 연산자3). 다음을 사용하세요.사이범위 테스트를 수행하기 위해 아래에 표시된 조건자.
또한 다음과 같이 몇 가지 비교 조건자가 있습니다.표 9.2. 이는 연산자와 매우 유사하게 동작하지만 SQL 표준에서 요구하는 특수 구문이 있습니다.
표 9.2. 비교 술어
|
술어 설명 예 |
|---|
|
사이(범위 끝점 포함).
|
|
사이에 없음(부정
|
|
사이, 두 끝점 값을 정렬한 후.
|
|
두 끝점 값을 정렬한 후 사이가 아닙니다.
|
|
같지 않음, null을 비교 가능한 값으로 처리합니다.
|
|
같음, null을 비교 가능한 값으로 처리합니다.
|
|
값이 null인지 테스트합니다.
|
|
값이 null이 아닌지 테스트합니다.
|
|
값이 null인지 테스트합니다(비표준 구문). |
|
값이 null이 아닌지 테스트합니다(비표준 구문). |
|
부울 표현식이 참인지 테스트합니다.
|
|
부울 표현식이 false인지 알 수 없는지 테스트합니다.
|
|
부울 표현식이 false를 산출하는지 테스트하세요.
|
|
부울 표현식이 참인지 알 수 없는지 테스트합니다.
|
|
부울 표현식이 알 수 없는 결과를 낳는지 테스트합니다.
|
|
부울 표현식이 참인지 거짓인지 테스트합니다.
|
a사이x그리고y
다음과 동일함
a=x그리고a<=y
알아두세요사이끝점 값을 범위에 포함된 것으로 처리합니다.대칭 사이다음과 같습니다사이단, 왼쪽에 있는 인수에 대한 요구 사항은 없습니다.그리고오른쪽 인수보다 작거나 같습니다. 그렇지 않은 경우 두 인수가 자동으로 교환되므로 비어 있지 않은 범위가 항상 암시됩니다.
다양한 변종사이일반적인 비교 연산자 측면에서 구현되므로 비교할 수 있는 모든 데이터 유형에 작동합니다.
사용그리고에서사이구문은 다음을 사용하여 모호함을 만듭니다.그리고논리 연산자로. 이 문제를 해결하려면 제한된 표현식 유형 집합만 a의 두 번째 인수로 허용됩니다.사이절. 더 복잡한 하위 표현식을 작성해야 하는 경우사이, 하위 표현식 주위에 괄호를 쓰세요.
일반 롤 토토 연산자는 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표현널 값으로 평가됩니다. SQL 표준을 준수하도록 이러한 애플리케이션을 수정하는 것이 좋습니다. 그러나 그렇게 할 수 없는 경우에는transform_null_equals구성 변수를 사용할 수 있습니다. 활성화된 경우,PostgreSQL변환할 것입니다x = NULL절x는 NULL입니다..
만약에표현행 값이면NULL입니다행 표현식 자체가 null이거나 행의 모든 필드가 null인 경우 true입니다. 반면NULL이 아닙니다행 표현식 자체가 null이 아니고 모든 행의 필드가 null이 아닌 경우 true입니다. 이러한 행동으로 인해,NULL임그리고NULL이 아닙니다행 값 표현식에 대해 항상 반대 결과를 반환하지는 않습니다. 특히 null 필드와 null이 아닌 필드를 모두 포함하는 행 값 식은 두 테스트 모두에 대해 false를 반환합니다. 예를 들어:
SELECT ROW(1,2.5,'테스트입니다') = ROW(1, 3, '같지 않음'); SELECT ROW(table.*) IS NULL FROM 테이블; -- 모두 null인 행을 감지합니다. SELECT ROW(table.*)는 테이블에서 NULL이 아닙니다. -- null이 아닌 모든 행을 감지합니다. SELECT NOT(ROW(table.*) IS NOT NULL) FROM TABLE; -- 행에서 하나 이상의 null을 감지합니다.
어떤 경우에는 다음과 같이 작성하는 것이 더 나을 수도 있습니다.행 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. 비교 함수
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.