집합형 데이터 타입인 피연산자 간 비교 연산을 수행하여 포함(containment) 관계를 확인하기 위해 포함 연산자가 사용된다. 피연산자로 집합형 데이터 타입 또는 부질의(subquery)를 지정할 수 있으며, 두 피연산자의 포함 관계(동일하다/다르다/부분집합이다/진부분집합이다)에 따라 TRUE 또는 FALSE를 반환한다.
다음은 CUBRID가 지원하는 포함 연산자에 관한 설명 및 리턴 값을 나타낸 표이다.
CUBRID가 지원하는 포함 연산자
포함 연산자 |
설명 |
조건식 |
리턴 값 |
---|---|---|---|
A SETEQ B |
A = B |
{1,2} SETEQ {1,2,2} |
0 |
A SETNEQ B |
A ≠ B |
{1,2} SETNEQ {1,2,3} |
1 |
A SUPERSET B |
A ⊃ B |
{1,2} SUPERSET {1,2,3} |
0 |
A SUBSET B |
A ⊂ B |
{1,2} SUBSET {1,2,3} |
1 |
A SUPERSETEQ B |
A ⊇ B |
{1,2} SUPERSETEQ {1,2,3} |
0 |
A SUBSETEQ B |
A ⊆ B |
{1,2} SUBSETEQ {1,2,3} |
1 |
다음은 포함 연산자를 이용하는 경우, 피연산자의 타입별 연산 가능 여부 및 타입 변환 여부를 나타낸 표이다.
포함 연산자의 피연산자 타입별 연산 가능 여부
|
SET |
MULTISET |
LIST(=SEQUENCE) |
---|---|---|---|
SET |
연산 가능 |
연산 가능 |
연산 가능 |
MULTISET |
연산 가능 |
연산 가능 |
연산 가능 |
LIST(=SEQUENCE) |
연산 가능 |
연산 가능 |
일부 연산만 가능 |
collection_operand containment_operator collection_operand
collection_operand:
• set
• multiset
• sequence(또는 list)
• subquery
• NULL
containment_operator:
• SETEQ
• SETNEQ
• SUPERSET
• SUBSET
• SUPERSETEQ
• SUBSETEQ
--empty set is a subset of any set
EVALUATE ({} SUBSETEQ (CAST ({3,1,2} AS SET)));
Result
=============
1
--operation between set type and null returns null
EVALUATE ((CAST ({3,1,2} AS SET)) SUBSETEQ NULL);
Result
=============
NULL
--{1,2,3} seteq {1,2,3} returns true
EVALUATE ((CAST ({3,1,2} AS SET)) SETEQ (CAST ({1,2,3,3} AS SET)));
Result
=============
1
--{1,2,3} seteq {1,2,3,3} returns false
EVALUATE ((CAST ({3,1,2} AS SET)) SETEQ (CAST ({1,2,3,3} AS MULTISET)));
Result
=============
0
--{1,2,3} setneq {1,2,3,3} returns true
EVALUATE ((CAST ({3,1,2} AS SET)) SETNEQ (CAST ({1,2,3,3} AS MULTISET)));
Result
=============
1
--{1,2,3} subseteq {1,2,3,4} returns true
EVALUATE ((CAST ({3,1,2} AS SET)) SUBSETEQ (CAST ({1,2,4,4,3} AS SET)));
Result
=============
1
--{1,2,3} subseteq {1,2,3,4,4} returns true
EVALUATE ((CAST ({3,1,2} AS SET)) SUBSETEQ (CAST ({1,2,4,4,3} AS MULTISET)));
Result
=============
1
--{1,2,3} subseteq {1,2,4,4,3} returns true
EVALUATE ((CAST ({3,1,2} AS SET)) SUBSETEQ (CAST ({1,2,4,4,3} AS LIST)));
Result
=============
0
--{1,2,3} subseteq {1,2,3,4,4} returns true
EVALUATE ((CAST ({3,1,2} AS SET)) SUBSETEQ (CAST ({1,2,3,4,4} AS LIST)));
Result
=============
1
--{3,1,2} seteq {3,1,2} returns true
EVALUATE ((CAST ({3,1,2} AS LIST)) SETEQ (CAST ({3,1,2} AS LIST)));
Result
=============
1
--error occurs because LIST subseteq LIST is not supported
EVALUATE ((CAST ({3,1,2} AS LIST)) SUBSETEQ (CAST ({3,1,2} AS LIST)));
Result
=============
error