:meta-keywords: cubrid coalesce, cubrid decode, cubrid greatest, cubrid if, cubrid ifnull, cubrid nvl, cubrid isnull, cubrid least, cubrid nullif, cubrid nlv2 :tocdepth: 3 ********* ë¹„êµ í•¨ìˆ˜ ********* .. contents:: COALESCE ======== .. function:: COALESCE(expression [, expression ] ...) **COALESCE** 함수는 하나 ì´ìƒì˜ ì—°ì‚°ì‹ ë¦¬ìŠ¤íŠ¸ê°€ ì¸ìžë¡œ ì§€ì •ë˜ë©°, 첫 번째 ì¸ìžê°€ **NULL** ì´ ì•„ë‹Œ ê°’ì´ë©´ 해당 ê°’ì„ ê²°ê³¼ë¡œ ë°˜í™˜í•˜ê³ , **NULL** ì´ë©´ ë‘ ë²ˆì§¸ ì¸ìžë¥¼ 반환한다. 만약 ì¸ìžë¡œ ì§€ì •ëœ ëª¨ë“ ì—°ì‚°ì‹ì´ **NULL** ì´ë©´ **NULL** ì„ ê²°ê³¼ë¡œ 반환한다. ì´ëŸ¬í•œ **COALESCE** 함수는 주로 **NULL** ê°’ì„ ë‹¤ë¥¸ 기본값으로 ëŒ€ì²´í• ë•Œ 사용한다. :param expression: 하나 ì´ìƒì˜ ì—°ì‚°ì‹ì„ ì§€ì •í•˜ë©°, 서로 ë¹„êµ ê°€ëŠ¥í•œ 타입ì´ì–´ì•¼ 한다. :rtype: *expression*\ ì˜ íƒ€ìž… **COALESCE** 함수는 ì¸ìžì˜ 타입 중 ìš°ì„ ìˆœìœ„ê°€ 가장 ë†’ì€ íƒ€ìž…ìœ¼ë¡œ ëª¨ë“ ì¸ìžë¥¼ 변환하여 ì—°ì‚°ì„ ìˆ˜í–‰í•œë‹¤. ì¸ìž ì¤‘ì— ê°™ì€ íƒ€ìž…ìœ¼ë¡œ ë³€í™˜í• ìˆ˜ 없는 íƒ€ìž…ì˜ ì¸ìžê°€ 있으면 ëª¨ë“ ì¸ìžë¥¼ **VARCHAR** 타입으로 변환한다. 아래는 ìž…ë ¥ ì¸ìžì˜ íƒ€ìž…ì— ë”°ë¥¸ 변환 ìš°ì„ ìˆœìœ„ë¥¼ 나타낸 것ì´ë‹¤. * **CHAR** < **VARCHAR** * **BIT** < **VARBIT** * **SHORT** < **INT** < **BIGINT** < **NUMERIC** < **FLOAT** < **DOUBLE** * **DATE** < **TIMESTAMP** < **DATETIME** 예를 들어 aì˜ íƒ€ìž…ì´ **INT**, bì˜ íƒ€ìž…ì´ **BIGINT**, cì˜ íƒ€ìž…ì´ **SHORT**, dì˜ íƒ€ìž…ì´ **FLOAT** ì´ë©´ **COALESCE** (a, b, c, d)는 **FLOAT** íƒ€ìž…ì„ ë°˜í™˜í•œë‹¤. 만약 aì˜ íƒ€ìž…ì´ **INTEGER**, bì˜ íƒ€ìž…ì´ **DOUBLE**, cì˜ íƒ€ìž…ì´ **FLOAT**, dì˜ íƒ€ìž…ì´ **TIMESTAMP** ì´ë©´ **COALESCE** (a, b, c, d)는 **VARCHAR** íƒ€ìž…ì„ ë°˜í™˜í•œë‹¤. **COALESCE** (*a, b*)는 다ìŒì˜ **CASE** ì¡°ê±´ì‹ê³¼ ê°™ì€ ì˜ë¯¸ë¥¼ 가진다. :: CASE WHEN a IS NOT NULL THEN a ELSE b END .. code-block:: sql SELECT * FROM case_tbl; :: a ============= 1 2 3 NULL .. code-block:: sql --substituting a default value 10.0000 for a NULL value SELECT a, COALESCE(a, 10.0000) FROM case_tbl; :: a coalesce(a, 10.0000) =================================== 1 1.0000 2 2.0000 3 3.0000 NULL 10.0000 DECODE ====== .. function:: DECODE(expression, search, result [, search, result]* [, default]) **DECODE** 함수는 **CASE** ì—°ì‚°ì‹ê³¼ 마찬가지로 **IF** ... **THEN** ... **ELSE** 문과 ë™ì¼í•œ ê¸°ëŠ¥ì„ ìˆ˜í–‰í•œë‹¤. ì¸ìžë¡œ ì§€ì •ëœ *expression* ê³¼ *search* 를 비êµí•˜ì—¬, ê°™ì€ ê°’ì„ ê°€ì§€ëŠ” *search* ì— ëŒ€ì‘하는 *result* 를 결과로 반환한다. 만약, ê°™ì€ ê°’ì„ ê°€ì§€ëŠ” *search* ê°€ 없다면 *default* ê°’ì„ ë°˜í™˜í•˜ê³ , *default* ê°’ì´ ìƒëžµëœ 경우ì—는 **NULL** ì„ ë°˜í™˜í•œë‹¤. ë¹„êµ ì—°ì‚°ì˜ ëŒ€ìƒì´ ë˜ëŠ” *expression* ê³¼ *search* 는 ë°ì´í„° íƒ€ìž…ì´ ë™ì¼í•˜ê±°ë‚˜ 서로 변환 가능해야 í•˜ê³ , ì§€ì •ëœ ëª¨ë“ *result* ê°’ì˜ ìœ íš¨ 숫ìžë¥¼ í¬í•¨í•˜ì—¬ í‘œí˜„í• ìˆ˜ 있ë„ë¡ ê²°ê³¼ ê°’ì˜ ì†Œìˆ˜ì 아래 ìžë¦¿ìˆ˜ê°€ ê²°ì •ëœë‹¤. :param expression,search: ë¹„êµ ê°€ëŠ¥í•œ íƒ€ìž…ì˜ ì—°ì‚°ì‹ :param result: 매ì¹ë˜ì—ˆì„ 때 ë°˜í™˜í• ê°’ :param default: 매치가 발견ë˜ì§€ ì•Šì•˜ì„ ë•Œ ë°˜í™˜í• ê°’ :rtype: *result*\ 와 *default*\ ì˜ íƒ€ìž…ì— ë”°ë¼ ê²°ì •ë¨ **DECODE**\(*a*, *b*, *c*, *d*, *e*, *f*)는 다ìŒì˜ **CASE** ì¡°ê±´ì‹ê³¼ ê°™ì€ ì˜ë¯¸ë¥¼ 가진다. :: CASE WHEN a = b THEN c WHEN a = d THEN e ELSE f END .. code-block:: sql SELECT * FROM case_tbl; :: a ============= 1 2 3 NULL .. code-block:: sql --Using DECODE function to compare expression and search values one by one SELECT a, DECODE(a, 1, 'one', 2, 'two', 'other') FROM case_tbl; :: a decode(a, 1, 'one', 2, 'two', 'other') =================================== 1 'one' 2 'two' 3 'other' NULL 'other' .. code-block:: sql --result types are converted to a single type containing all of significant figures SELECT a, DECODE(a, 1, 1, 2, 1.2345, 1.234567890) FROM case_tbl; :: a decode(a, 1, 1, 2, 1.2345, 1.234567890) =================================== 1 1.000000000 2 1.234500000 3 1.234567890 NULL 1.234567890 .. code-block:: sql --an error occurs when result types are not convertible SELECT a, DECODE(a, 1, 'one', 2, 'two', 1.2345) FROM case_tbl; :: ERROR: Cannot coerce 'one' to type double. GREATEST ======== .. function:: GREATEST(expression [, expression] ...) **GREATEST** 함수는 ì¸ìžë¡œ ì§€ì •ëœ í•˜ë‚˜ ì´ìƒì˜ ì—°ì‚°ì‹ì„ 서로 비êµí•˜ì—¬ 가장 í° ê°’ì„ ë°˜í™˜í•œë‹¤. 만약, í•˜ë‚˜ì˜ ì—°ì‚°ì‹ë§Œ ì§€ì •ë˜ë©´ 서로 비êµí• 대ìƒì´ 없으므로 해당 ì—°ì‚°ì‹ì˜ ê°’ì„ ê·¸ëŒ€ë¡œ 반환한다. ë”°ë¼ì„œ, ì¸ìžë¡œ ì§€ì •ë˜ëŠ” 하나 ì´ìƒì˜ ì—°ì‚°ì‹ì€ 서로 ë¹„êµ ê°€ëŠ¥í•œ 타입ì´ì–´ì•¼ 한다. ì§€ì •ëœ ì¸ìžì˜ íƒ€ìž…ì´ ë™ì¼í•˜ë©´ 리턴 ê°’ì˜ íƒ€ìž…ë„ ë™ì¼í•˜ê³ , ì¸ìžì˜ íƒ€ìž…ì´ ë‹¤ë¥´ë©´ 리턴 ê°’ì˜ íƒ€ìž…ì€ ë³€í™˜ 가능(convertible)한 ê³µí†µì˜ ë°ì´í„° íƒ€ìž…ì´ ëœë‹¤. 즉, **GREATEST** 함수는 ê°™ì€ í–‰(row) ë‚´ì—서 칼럼 1, 칼럼 2, 칼럼 3ì˜ ê°’ì„ ì„œë¡œ 비êµí•˜ì—¬ 최대 ê°’ì„ ë°˜í™˜í•˜ë©°, :func:`MAX` 함수는 ëª¨ë“ ê²°ê³¼ í–‰ë“¤ì˜ ì¹¼ëŸ¼ 1 ê°’ì„ ì„œë¡œ 비êµí•˜ì—¬ 최대 ê°’ì„ ë°˜í™˜í•œë‹¤. :param expression: 하나 ì´ìƒì˜ ì—°ì‚°ì‹ì„ ì§€ì •í•˜ë©°, 서로 ë¹„êµ ê°€ëŠ¥í•œ 타입ì´ì–´ì•¼ 한다. ì¸ìž 중 ì–´ëŠ í•˜ë‚˜ê°€ **NULL** ê°’ì´ë©´ **NULL** ì„ ë°˜í™˜í•œë‹¤. :rtype: *expression*\ ì˜ íƒ€ìž… 다ìŒì€ *demodb* ì—서 한êµì´ íšë“한 ê° ë©”ë‹¬ì˜ ìˆ˜ì™€ 최대 ë©”ë‹¬ì˜ ìˆ˜ë¥¼ 반환하는 ì˜ˆì œì´ë‹¤. .. code-block:: sql SELECT gold, silver , bronze, GREATEST (gold, silver, bronze) FROM participant WHERE nation_code = 'KOR'; :: gold silver bronze greatest(gold, silver, bronze) ======================================================================= 9 12 9 12 8 10 10 10 7 15 5 15 12 5 12 12 12 10 11 12 IF == .. function:: IF(expression1, expression2, expression3) **IF** 함수는 첫 번째 ì¸ìžë¡œ ì§€ì •ëœ ì—°ì‚°ì‹ì˜ ê°’ì´ **TRUE** ì´ë©´ *expression2* 를 ë°˜í™˜í•˜ê³ , **FALSE** ì´ê±°ë‚˜ **NULL** ì´ë©´ *expression3* 를 반환한다. 결과로 반환ë˜ëŠ” *expression2* 와 *expression3* ì€ ë°ì´í„° íƒ€ìž…ì´ ë™ì¼í•˜ê±°ë‚˜ ê³µí†µì˜ íƒ€ìž…ìœ¼ë¡œ 변환 가능해야 한다. 둘 중 하나가 명확하게 **NULL** ì´ë©´, í•¨ìˆ˜ì˜ ê²°ê³¼ íƒ€ìž…ì€ **NULL** ì´ ì•„ë‹Œ ì¸ìžì˜ íƒ€ìž…ì„ ë”°ë¥¸ë‹¤. :param expression1: ë¹„êµ ì¡°ê±´ì‹ :param expression2: *expression1*\ ì´ ì°¸ì¼ ë•Œ ë°˜í™˜í• ê°’ :param expression3: *expression1*\ ì´ ì°¸ì´ ì•„ë‹ ë•Œ ë°˜í™˜í• ê°’ :rtype: *expression2* ë˜ëŠ” *expression3*\ ì˜ íƒ€ìž… **IF**\(*a*, *b*, *c*)는 다ìŒì˜ **CASE** ì—°ì‚°ì‹ê³¼ ê°™ì€ ì˜ë¯¸ë¥¼ 가진다. :: CASE WHEN a IS TRUE THEN b ELSE c END .. code-block:: sql SELECT * FROM case_tbl; :: a ============= 1 2 3 NULL .. code-block:: sql --IF function returns the second expression when the first is TRUE SELECT a, IF(a=1, 'one', 'other') FROM case_tbl; :: a if(a=1, 'one', 'other') =================================== 1 'one' 2 'other' 3 'other' NULL 'other' .. code-block:: sql --If function in WHERE clause SELECT * FROM case_tbl WHERE IF(a=1, 1, 2) = 1; :: a ============= 1 IFNULL, NVL =========== .. function:: IFNULL(expr1, expr2) .. function:: NVL(expr1, expr2) **IFNULL** 함수와 **NVL** 함수는 ìœ ì‚¬í•˜ê²Œ ë™ìž‘하며, **NVL** 함수는 ì»¬ë ‰ì…˜ íƒ€ìž…ì„ ì¶”ê°€ë¡œ ì§€ì›í•œë‹¤. ë‘ ê°œì˜ ì¸ìžê°€ ì§€ì •ë˜ë©°, 첫 번째 ì¸ìž *expr1* ì´ **NULL** ì´ ì•„ë‹ˆë©´ *expr1* ì„ ë°˜í™˜í•˜ê³ , **NULL** ì´ë©´ ë‘ ë²ˆì§¸ ì¸ìžì¸ *expr2* 를 반환한다. :param expr1: ì¡°ê±´ì‹ :param expr2: *expr1*\ ì´ **NULL**\ ì¼ ë•Œ ë°˜í™˜í• ê°’ :rtype: *expr1*\ ê³¼ *expr2*\ ì˜ íƒ€ìž…ì— ë”°ë¼ ê²°ì •ë¨ **IFNULL** 함수와 **NVL** 함수는 ì¸ìžì˜ 타입 중 ìš°ì„ ìˆœìœ„ê°€ 가장 ë†’ì€ íƒ€ìž…ìœ¼ë¡œ ëª¨ë“ ì¸ìžë¥¼ 변환하여 ì—°ì‚°ì„ ìˆ˜í–‰í•œë‹¤. ì¸ìž ì¤‘ì— ê°™ì€ íƒ€ìž…ìœ¼ë¡œ ë³€í™˜í• ìˆ˜ 없는 íƒ€ìž…ì˜ ì¸ìžê°€ 있으면 ëª¨ë“ ì¸ìžë¥¼ **VARCHAR** 타입으로 변환한다. 아래는 ìž…ë ¥ ì¸ìžì˜ íƒ€ìž…ì— ë”°ë¥¸ 변환 ìš°ì„ ìˆœìœ„ë¥¼ 나타낸 것ì´ë‹¤. * **CHAR** < **VARCHAR** * **BIT** < **VARBIT** * **SHORT** < **INT** < **BIGINT** < **NUMERIC** < **FLOAT** < **DOUBLE** * **DATE** < **TIMESTAMP** < **DATETIME** 예를 들어 aì˜ íƒ€ìž…ì´ **INT**, bì˜ íƒ€ìž…ì´ **BIGINT** ì´ë©´ **IFNULL** (a, b)ì€ **BIGINT** íƒ€ìž…ì„ ë°˜í™˜í•œë‹¤. 만약 aì˜ íƒ€ìž…ì´ **INTEGER**, bì˜ íƒ€ìž…ì´ **TIMESTAMP** ì´ë©´ **IFNULL** (a, b)ì€ **VARCHAR** íƒ€ìž…ì„ ë°˜í™˜í•œë‹¤. **IFNULL**\(*a*, *b*) ë˜ëŠ” **NVL**\(*a*, *b*)는 다ìŒì˜ **CASE** ì¡°ê±´ì‹ê³¼ ê°™ì€ ì˜ë¯¸ë¥¼ 가진다. :: CASE WHEN a IS NULL THEN b ELSE a END .. code-block:: sql SELECT * FROM case_tbl; :: a ============= 1 2 3 NULL .. code-block:: sql --returning a specific value when a is NULL SELECT a, NVL(a, 10.0000) FROM case_tbl; :: a nvl(a, 10.0000) =================================== 1 1.0000 2 2.0000 3 3.0000 NULL 10.0000 .. code-block:: sql --IFNULL can be used instead of NVL and return values are converted to the string type SELECT a, IFNULL(a, 'UNKNOWN') FROM case_tbl; :: a ifnull(a, 'UNKNOWN') =================================== 1 '1' 2 '2' 3 '3' NULL 'UNKNOWN' ISNULL ====== .. function:: ISNULL(expression) **ISNULL** 함수는 ì¡°ê±´ì ˆ ë‚´ì—서 ì‚¬ìš©í• ìˆ˜ 있으며, ì¸ìžë¡œ ì§€ì •ëœ í‘œí˜„ì‹ì˜ 결과가 **NULL** ì¸ì§€ 비êµí•˜ì—¬ **NULL** ì´ë©´ 1ì„ ë°˜í™˜í•˜ê³ , 아니면 0ì„ ë°˜í™˜í•œë‹¤. ì´ í•¨ìˆ˜ë¥¼ ì´ìš©í•˜ì—¬ ì–´ë–¤ ê°’ì´ **NULL** ì¸ì§€ 아닌지를 í…ŒìŠ¤íŠ¸í• ìˆ˜ 있으며, **IS NULL** ì¡°ê±´ì‹ê³¼ ìœ ì‚¬í•˜ê²Œ ë™ìž‘한다. :param expression: ë‹¨ì¼ ê°’ì„ ê°€ì§€ëŠ” 칼럼, 경로 표현ì‹(예: *tbl_name.col_name*), ìƒìˆ˜ ê°’ ë˜ëŠ” ë‹¨ì¼ ê°’ì„ ìƒì„±í•˜ëŠ” ì‚°ìˆ í•¨ìˆ˜ë¥¼ ìž…ë ¥í•œë‹¤. :rtype: INT .. code-block:: sql --Using ISNULL function to select rows with NULL value SELECT * FROM condition_tbl WHERE ISNULL(salary); :: id name dept_name salary ====================================================================== 7 'Brown ' 'account' NULL LEAST ===== .. function:: LEAST(expression [, expression] ...) **LEAST** 함수는 ì¸ìžë¡œ ì§€ì •ëœ í•˜ë‚˜ ì´ìƒì˜ ì—°ì‚°ì‹ì„ 비êµí•˜ì—¬ 가장 ìž‘ì€ ê°’ì„ ë°˜í™˜í•œë‹¤. 만약, í•˜ë‚˜ì˜ ì—°ì‚°ì‹ë§Œ ì§€ì •ë˜ë©´ 서로 비êµí• 대ìƒì´ 없으므로 해당 ì—°ì‚°ì‹ì˜ ê°’ì„ ê·¸ëŒ€ë¡œ 반환한다. ë”°ë¼ì„œ, ì¸ìžë¡œ ì§€ì •ë˜ëŠ” 하나 ì´ìƒì˜ ì—°ì‚°ì‹ì€ 서로 ë¹„êµ ê°€ëŠ¥í•œ 타입ì´ì–´ì•¼ 한다. 만약, ì§€ì •ëœ ì¸ìžì˜ íƒ€ìž…ì´ ë™ì¼í•˜ë©´ 리턴 ê°’ì˜ íƒ€ìž…ë„ ë™ì¼í•˜ê³ , ì¸ìžì˜ íƒ€ìž…ì´ ë‹¤ë¥´ë©´ 리턴 ê°’ì˜ íƒ€ìž…ì€ ë³€í™˜ 가능(convertible)한 ê³µí†µì˜ ë°ì´í„° íƒ€ìž…ì´ ëœë‹¤. 즉, **LEAST** 함수는 ê°™ì€ í–‰(row) ë‚´ì—서 칼럼 1, 칼럼 2, 칼럼 3ì˜ ê°’ì„ ì„œë¡œ 비êµí•˜ì—¬ 최소 ê°’ì„ ë°˜í™˜í•˜ë©°, :func:`MIN` 함수는 ëª¨ë“ ê²°ê³¼ í–‰ë“¤ì˜ ì¹¼ëŸ¼ 1 ê°’ì„ ì„œë¡œ 비êµí•˜ì—¬ 최소 ê°’ì„ ë°˜í™˜í•œë‹¤. :param expression: 하나 ì´ìƒì˜ ì—°ì‚°ì‹ì„ ì§€ì •í•˜ë©°, 서로 ë¹„êµ ê°€ëŠ¥í•œ 타입ì´ì–´ì•¼ 한다. ì¸ìž 중 ì–´ëŠ í•˜ë‚˜ê°€ **NULL** ê°’ì´ë©´ **NULL** ì„ ë°˜í™˜í•œë‹¤. :rtype: *expression*\ ì˜ íƒ€ìž… 다ìŒì€ *demodb* ì—서 한êµì´ íšë“한 ê° ë©”ë‹¬ì˜ ìˆ˜ì™€ 최소 ë©”ë‹¬ì˜ ìˆ˜ë¥¼ 반환하는 ì˜ˆì œì´ë‹¤. .. code-block:: sql SELECT gold, silver , bronze, LEAST(gold, silver, bronze) FROM participant WHERE nation_code = 'KOR'; :: gold silver bronze least(gold, silver, bronze) ==================================================================== 9 12 9 9 8 10 10 8 7 15 5 5 12 5 12 5 12 10 11 10 NULLIF ====== .. function:: NULLIF(expr1, expr2) **NULLIF** 함수는 ì¸ìžë¡œ ì§€ì •ëœ ë‘ ê°œì˜ ì—°ì‚°ì‹ì´ ë™ì¼í•˜ë©´ **NULL** ì„ ë°˜í™˜í•˜ê³ , 다르면 첫 번째 ì¸ìž ê°’ì„ ë°˜í™˜í•œë‹¤. :param expr1: 비êµí• ì—°ì‚°ì‹ :param expr2: 비êµí• ì—°ì‚°ì‹ :rtype: *expr1*\ ì˜ íƒ€ìž… **NULLIF** (*a, b*)는 다ìŒì˜ **CASE** ì¡°ê±´ì‹ê³¼ ê°™ì€ ì˜ë¯¸ë¥¼ 가진다. :: CASE WHEN a = b THEN NULL ELSE a END .. code-block:: sql SELECT * FROM case_tbl; :: a ============= 1 2 3 NULL .. code-block:: sql --returning NULL value when a is 1 SELECT a, NULLIF(a, 1) FROM case_tbl; :: a nullif(a, 1) =========================== 1 NULL 2 2 3 3 NULL NULL .. code-block:: sql --returning NULL value when arguments are same SELECT NULLIF (1, 1.000) FROM db_root; :: nullif(1, 1.000) ====================== NULL .. code-block:: sql --returning the first value when arguments are not same SELECT NULLIF ('A', 'a') FROM db_root; :: nullif('A', 'a') ====================== 'A' NVL2 ==== .. function:: NVL2(expr1, expr2, expr3) **NVL2** 함수는 세 ê°œì˜ ì¸ìžê°€ ì§€ì •ë˜ë©°, 첫 번째 ì—°ì‚°ì‹(*expr1*)ì´ **NULL** ì´ ì•„ë‹ˆë©´ ë‘ ë²ˆì§¸ ì—°ì‚°ì‹(*expr2*)ì„ ë°˜í™˜í•˜ê³ , **NULL** ì´ë©´ 세 번째 ì—°ì‚°ì‹(*expr3*)ì„ ë°˜í™˜í•œë‹¤. :param expr1: ì¡°ê±´ì‹ :param expr2: *expr1*\ ì´ **NULL**\ ì´ ì•„ë‹ ë•Œ ë°˜í™˜í• ê°’ :param expr3: *expr1*\ ì´ **NULL**\ ì¼ ë•Œ ë°˜í™˜í• ê°’ :rtype: *expr1*, *expr2*, *expr3*\ ì˜ íƒ€ìž…ì— ë”°ë¼ì„œ ê²°ì •ë¨ **NVL2** 함수는 ì¸ìžì˜ 타입 중 ìš°ì„ ìˆœìœ„ê°€ 가장 ë†’ì€ íƒ€ìž…ìœ¼ë¡œ ëª¨ë“ ì¸ìžë¥¼ 변환하여 ì—°ì‚°ì„ ìˆ˜í–‰í•œë‹¤. ì¸ìž ì¤‘ì— ê°™ì€ íƒ€ìž…ìœ¼ë¡œ ë³€í™˜í• ìˆ˜ 없는 íƒ€ìž…ì˜ ì¸ìžê°€ 있으면 ëª¨ë“ ì¸ìžë¥¼ **VARCHAR** 타입으로 변환한다. 아래는 ìž…ë ¥ ì¸ìžì˜ íƒ€ìž…ì— ë”°ë¥¸ 변환 ìš°ì„ ìˆœìœ„ë¥¼ 나타낸 것ì´ë‹¤. * **CHAR** < **VARCHAR** * **BIT** < **VARBIT** * **SHORT** < **INT** < **BIGINT** < **NUMERIC** < **FLOAT** < **DOUBLE** * **DATE** < **TIMESTAMP** < **DATETIME** 예를 들어 aì˜ íƒ€ìž…ì´ **INT**, bì˜ íƒ€ìž…ì´ **BIGINT**, cì˜ íƒ€ìž…ì´ **SHORT** ì´ë©´ **NVL2** (a, b, c)는 **BIGINT** íƒ€ìž…ì„ ë°˜í™˜í•œë‹¤. 만약 aì˜ íƒ€ìž…ì´ **INTEGER**, bì˜ íƒ€ìž…ì´ **DOUBLE**, cì˜ íƒ€ìž…ì´ **TIMESTAMP** ì´ë©´ **NVL2** (a, b, c)는 **VARCHAR** íƒ€ìž…ì„ ë°˜í™˜í•œë‹¤. .. code-block:: sql SELECT * FROM case_tbl; :: a ============= 1 2 3 NULL .. code-block:: sql --returning a specific value of INT type SELECT a, NVL2(a, a+1, 10.5678) FROM case_tbl; :: a nvl2(a, a+1, 10.5678) ==================================== 1 2 2 3 3 4 NULL 11