:meta-keywords: cubrid set, cubrid multiset, cubrid list, cubrid sequence, cubrid collection type **************** ì§‘í•© ì‚°ìˆ ì—°ì‚°ìž **************** SET, MULTISET, LIST =================== ì»¬ë ‰ì…˜ 타입(**SET**, **MULTISET**, **LIST** (= **SEQUENCE**)) ë°ì´í„°ì— 대해 í•©ì§‘í•©, 차집합, êµì§‘í•©ì„ êµ¬í•˜ê¸° 위해서 ê°ê° +, -, * ì—°ì‚°ìžë¥¼ ì‚¬ìš©í• ìˆ˜ 있다. :: <value_expression> <set_arithmetic_operator> <value_expression> <value_expression> ::= collection_value | NULL <set_arithmetic_operator> ::= + (í•©ì§‘í•©) | - (차집합) | * (êµì§‘í•©) 다ìŒì€ ì»¬ë ‰ì…˜ íƒ€ìž…ì´ í”¼ì—°ì‚°ìžì¸ 경우, 연산별 ê²°ê³¼ ë°ì´í„° íƒ€ìž…ì„ ë‚˜íƒ€ë‚¸ 표ì´ë‹¤. **피연산ìžì˜ 타입별 ê²°ê³¼ ë°ì´í„° 타입** +-----------------+--------------+--------------+-----------------+ | | SET | MULTISET | LIST | +=================+==============+==============+=================+ | **SET** | **+** | **+** | **+** | | | , | , | , | | | **-** | **-** | **-** | | | , | , | , | | | **\*** | **\*** | **\*** | | | : | : | : | | | **SET** | **MULTISET** | **MULTISET** | +-----------------+--------------+--------------+-----------------+ | **MULTISET** | **+** | **+** | **+** | | | , | , | , | | | **-** | **-** | **-** | | | , | , | , | | | **\*** | **\*** | **\*** | | | : | : | : | | | **MULTISET** | **MULTISET** | **MULTISET** | +-----------------+--------------+--------------+-----------------+ | **LIST** | **+, -, *** | **+, -, *** | **+** | | **(=SEQUENCE)** | : | : | : | | | **MULTISET** | **MULTISET** | **LIST** | | | | | **-, *** | | | | | : | | | | | **MULTISET** | +-----------------+--------------+--------------+-----------------+ 다ìŒì€ ì»¬ë ‰ì…˜ íƒ€ìž…ì„ ê°€ì§€ê³ ì‚°ìˆ ì—°ì‚°ì„ ìˆ˜í–‰í•˜ëŠ” 예ì´ë‹¤. .. code-block:: sql SELECT ((CAST ({3,3,3,2,2,1} AS SET))+(CAST ({4,3,3,2} AS MULTISET))); :: (( cast({3, 3, 3, 2, 2, 1} as set))+( cast({4, 3, 3, 2} as multiset))) ====================== {1, 2, 2, 3, 3, 3, 4} .. code-block:: sql SELECT ((CAST ({3,3,3,2,2,1} AS MULTISET))+(CAST ({4,3,3,2} AS MULTISET))); :: (( cast({3, 3, 3, 2, 2, 1} as multiset))+( cast({4, 3, 3, 2} as multiset))) ====================== {1, 2, 2, 2, 3, 3, 3, 3, 3, 4} .. code-block:: sql SELECT ((CAST ({3,3,3,2,2,1} AS LIST))+(CAST ({4,3,3,2} AS MULTISET))); :: (( cast({3, 3, 3, 2, 2, 1} as sequence))+( cast({4, 3, 3, 2} as multiset))) ====================== {1, 2, 2, 2, 3, 3, 3, 3, 3, 4} .. code-block:: sql SELECT ((CAST ({3,3,3,2,2,1} AS SET))-(CAST ({4,3,3,2} AS MULTISET))); :: (( cast({3, 3, 3, 2, 2, 1} as set))-( cast({4, 3, 3, 2} as multiset))) ====================== {1} .. code-block:: sql SELECT ((CAST ({3,3,3,2,2,1} AS MULTISET))-(CAST ({4,3,3,2} AS MULTISET))); :: (( cast({3, 3, 3, 2, 2, 1} as multiset))-( cast({4, 3, 3, 2} as multiset))) ====================== {1, 2, 3} .. code-block:: sql SELECT ((CAST ({3,3,3,2,2,1} AS LIST))-(CAST ({4,3,3,2} AS MULTISET))); :: (( cast({3, 3, 3, 2, 2, 1} as sequence))-( cast({4, 3, 3, 2} as multiset))) ====================== {1, 2, 3} .. code-block:: sql SELECT ((CAST ({3,3,3,2,2,1} AS SET))*(CAST ({4,3,3,2} AS MULTISET))); :: (( cast({3, 3, 3, 2, 2, 1} as set))*( cast({4, 3, 3, 2} as multiset))) ====================== {2, 3} .. code-block:: sql SELECT ((CAST ({3,3,3,2,2,1} AS MULTISET))*(CAST ({4,3,3,2} AS MULTISET))); :: (( cast({3, 3, 3, 2, 2, 1} as multiset))*( cast({4, 3, 3, 2} as multiset))) ====================== {2, 3, 3} .. code-block:: sql SELECT ((CAST ({3,3,3,2,2,1} AS LIST))*(CAST ({4,3,3,2} AS MULTISET))); :: (( cast({3, 3, 3, 2, 2, 1} as sequence))*( cast({4, 3, 3, 2} as multiset))) ====================== {2, 3, 3} ë³€ìˆ˜ì— ì»¬ë ‰ì…˜ ê°’ í• ë‹¹ --------------------- ì»¬ë ‰ì…˜ ê°’ì„ ë³€ìˆ˜ì— í• ë‹¹í•˜ê¸° 위해서는 외부 질ì˜ê°€ í•˜ë‚˜ì˜ í–‰ë§Œì„ ë°˜í™˜í•´ì•¼ 한다. 다ìŒì€ ì»¬ë ‰ì…˜ ê°’ì„ ë³€ìˆ˜ì— í• ë‹¹í•˜ëŠ” ë°©ë²•ì„ ë‚˜íƒ€ë‚´ëŠ” ì˜ˆì œì´ë‹¤. 다ìŒê³¼ ê°™ì´ ì™¸ë¶€ 질ì˜ëŠ” í•˜ë‚˜ì˜ í–‰ë§Œì„ ë°˜í™˜í•´ì•¼ 한다. .. code-block:: sql CREATE TABLE people ( ssn VARCHAR(10), name VARCHAR(255) ); INSERT INTO people VALUES ('1234', 'Ken'), ('5678', 'Dan'), ('9123', 'Jones'); SELECT SET(SELECT name FROM people WHERE ssn in {'1234', '5678'}) TO :name_group;