이 주제에서는 ESQL 복합 비교 연산자(술어)에 대해 설명합니다. ESQL 단순 비교 연산자에 대한 정보는 ESQL 단순 비교 연산자를 참조하십시오.
이 연산자는 두 가지 형식(SYMMETRIC 및 ASYMMETRIC)으로 존재합니다(어느 것도 지정되지 않은 경우 디폴트임). SYMMETRIC 형식은 다음과 같습니다.
(source >= boundary1 AND source <= boundary2) OR (source >= boundary2 AND source <= boundary1)
ASYMMETRIC 형식은 다음과 같습니다.
source >= boundary1 AND source <= boundary2
ASYMMETRIC 형식이 더 간단하지만 첫 번째 경계 값이 두 번째 경계보다 더 작은 값이면 예상 결과만을 리턴합니다. 그러므로 경계 조건 표현식이 리터럴인 경우에만 유용할 것입니다.
다른 유형인 경우에는 특수 규칙이 적용됩니다. 이에 대해서는 내재적 캐스트에서 설명합니다.
EXISTS(SELECT * FROM something WHERE predicate)
왼쪽 피연산자가 NULL이 아니고 오른쪽 피연산자 중 하나와 같으면 결과는 TRUE입니다. 왼쪽 피연산자가 NULL이 아니고 어느 것도 NULL 값을 갖지 않는 오른쪽 피연산자 중 하나와 같지 않으면, 결과는 FALSE입니다. 그렇지 않으면, 결과는 UNKNOWN입니다. 다른 유형인 경우에는 특수 규칙이 적용됩니다. 이에 대해서는 내재적 캐스트에서 설명합니다.
연산자 IS의 주요 목적은 값이 널(null)인지 여부를 테스트하는 것입니다. 널(null)과 비교한 결과가 널(null)이므로 비교 연산자(=)는 이를 허용하지 않습니다.
또한 IS를 사용하면 Boolean 값 TRUE 및 FALSE에 대해 테스트할 수 있고, 특수 값에 대한 10진수 값에 대해 테스트할 수도 있습니다. 이것은 대소문자가 혼합된 상태의 INF, +INF, -INF, NAN(숫자 아님) 및 NUM(유효한 숫자)으로 표시됩니다. 대안 형식인 +INFINITY, -INFINITY 및 NUMBER도 승인됩니다.
숫자가 아닌 유형에 적용되면 결과는 FALSE입니다.
모든 피연산자는 널(null)이 아니며 소스 피연산자가 패턴 피연산자와 일치하는 경우 결과는 TRUE입니다. 모든 피연산자가 널(null)이 아니고 소스 피연산자가 패턴 피연산자와 일치하지 않은 경우 결과는 FALSE입니다. 그렇지 않으면, 결과는 UNKNOWN입니다.
패턴은 특별한 의미를 갖기 위해 퍼센트(%) 및 밑줄(_) 문자열로 지정됩니다.
Body.Trade.Company LIKE 'I__'
Body.Trade.Company LIKE 'I%'
검색할 표현식 내에서 퍼센트 및 밑줄을 사용하려면, 이 문자 앞에 디폴트로 백슬래시(\) 문자로 지정되는 이스케이프 문자가 와야 합니다.
예를 들면, 다음 술어는 일치하는 항목으로 IBM_Corp를 찾습니다.
Body.Trade.Company LIKE 'IBM\_Corp'
ESCAPE절을 사용하여 다른 이스케이프 문자를 지정할 수 있습니다. 예를 들면, 이전 예를 다음과 같이 지정할 수도 있습니다.
Body.Trade.Company LIKE 'IBM$_Corp' ESCAPE '$'