개요

설명

집합형 데이터 타입인 피연산자 간 비교 연산을 수행하여 포함(containment) 관계를 확인하기 위해 포함 연산자가 사용된다. 피연산자로 집합형 데이터 타입 또는 부질의(subquery)를 지정할 수 있으며, 두 피연산자의 포함 관계(동일하다/다르다/부분집합이다/진부분집합이다)에 따라 TRUE 또는 FALSE를 반환한다.

다음은 CUBRID가 지원하는 포함 연산자에 관한 설명 및 리턴 값을 나타낸 표이다.

CUBRID가 지원하는 포함 연산자

포함 연산자

설명

조건식

리턴 값

A SETEQ B

A = B
집합 A와 집합 B의 원소가 서로 같다.

{1,2} SETEQ {1,2,2}

0

A SETNEQ B

A ≠ B
집합 A와 집합 B의 원소가 같지 않다.

{1,2} SETNEQ {1,2,3}

1

A SUPERSET B

A ⊃ B
집합 B는 집합 A의 진 부분집합이다.

{1,2} SUPERSET {1,2,3}

0

A SUBSET B

A ⊂ B
집합 A는 집합 B의 진 부분집합이다.

{1,2} SUBSET {1,2,3}

1

A SUPERSETEQ B

A ⊇ B
집합 B는 집합 A의 부분 집합이다.

{1,2} SUPERSETEQ {1,2,3}

0

A SUBSETEQ B

A ⊆ B
집합 A는 집합 B의 부분 집합이다.

{1,2} SUBSETEQ {1,2,3}

1

다음은 포함 연산자를 이용하는 경우, 피연산자의 타입별 연산 가능 여부 및 타입 변환 여부를 나타낸 표이다.

포함 연산자의 피연산자 타입별 연산 가능 여부

 

SET 

MULTISET

LIST(=SEQUENCE)

SET

연산 가능

연산 가능

연산 가능

MULTISET

연산 가능

연산 가능

연산 가능
(LIST 타입은 MULTISET 타입으로 변환됨)

LIST(=SEQUENCE)

연산 가능

연산 가능
(LIST 타입은 MULTISET 타입으로 변환됨)

일부 연산만 가능
(SETEQ, SETNEQ)
나머지 연산은 에러 발생

구문

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)));

=============

            1

 

--operation between set type and null returns null

EVALUATE ((CAST ({3,1,2} AS SET)) SUBSETEQ NULL);

=============

            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)));

=============

            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)));

=============

            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)));

=============

            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)));

=============

            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)));

=============

            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)));

=============

            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)));

=============

            1

 

--{3,1,2} seteq {3,1,2} returns true

EVALUATE ((CAST ({3,1,2} AS LIST)) SETEQ (CAST ({3,1,2} AS LIST)));

=============

            1

--error occurs because LIST subseteq LIST is not supported

EVALUATE ((CAST ({3,1,2} AS LIST)) SUBSETEQ (CAST ({3,1,2} AS LIST)));

=============

        error