CASE

CASE 문은 여러 조건을 지정하는 방법을 제공합니다.

분기 구문에 대한 자세한 내용은 분기 구문 작업하기 섹션을 참조하십시오.

구문

간단한 CASE 문:

CASE ( <expression_to_match> )
    WHEN <expression> THEN
        <statement>;
        [ <statement>; ... ]
    [ WHEN ... ]
    [ ELSE
        <statement>;
        [ <statement>; ... ]
    ]
END [ CASE ] ;

여기서:

expression_to_match

일치시킬 식입니다.

expression

이 식의 값이 expression_to_match 의 값과 일치하면 이 절의 문이 실행됩니다.

statement

문은 다음 중 하나일 수 있습니다.

  • 단일 SQL 문(CALL 포함).

  • 제어 흐름 문(예: 루핑 또는 분기 문).

  • 중첩 블록.

검색된 CASE 문:

CASE
    WHEN <boolean_expression> THEN
        <statement>;
        [ <statement>; ... ]
    [ WHEN ... ]
    [ ELSE
        <statement>;
        [ <statement>; ... ]
    ]
END [ CASE ] ;

여기서:

boolean_expression

이 식이 TRUE로 평가되면 이 절의 문이 실행됩니다.

statement

문은 다음 중 하나일 수 있습니다.

  • 단일 SQL 문(CALL 포함).

  • 제어 흐름 문(예: 루핑 또는 분기 문).

  • 중첩 블록.

사용법 노트

  • CASE 의 둘 이상의 분기가 식과 일치하는 경우 첫 번째 분기만 사용됩니다.

  • 식을 비교할 때 NULL은 NULL과 일치하지 않습니다. NULL 값에 대해 명시적으로 테스트하려면 IS [ NOT ] NULL 을 사용하십시오.

이 예는 간단한 CASE 문을 보여줍니다.

CREATE PROCEDURE case_demo_01(v VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
AS
  BEGIN
    CASE (v)
      WHEN 'first choice' THEN
        RETURN 'one';
      WHEN 'second choice' THEN
        RETURN 'two';
      ELSE
        RETURN 'unexpected choice';
    END;
  END;

참고: SnowSQL 또는 클래식 웹 인터페이스 를 사용하는 경우 대신 다음 예를 사용하십시오(SnowSQL 및 클래식 웹 인터페이스에서 Snowflake Scripting 사용하기 참조).

CREATE PROCEDURE case_demo_01(v VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
    BEGIN
        CASE (v)
            WHEN 'first choice' THEN
                RETURN 'one';
            WHEN 'second choice' THEN
                RETURN 'two';
            ELSE
                RETURN 'unexpected choice';
       END CASE;
    END;
$$
;

이 저장 프로시저를 호출하면 프로시저는 다음 출력을 생성합니다.

CALL case_demo_01('second choice');
+--------------+
| CASE_DEMO_01 |
|--------------|
| two          |
+--------------+

이 예는 검색된 CASE 문을 보여줍니다.

CREATE PROCEDURE case_demo_2(v VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
AS
  BEGIN
    CASE
      WHEN v = 'first choice' THEN
        RETURN 'one';
      WHEN v = 'second choice' THEN
        RETURN 'two';
      ELSE
        RETURN 'unexpected choice';
    END;
  END;

참고: SnowSQL 또는 클래식 웹 인터페이스 를 사용하는 경우 대신 다음 예를 사용하십시오(SnowSQL 및 클래식 웹 인터페이스에서 Snowflake Scripting 사용하기 참조).

CREATE PROCEDURE case_demo_2(v VARCHAR)
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
    BEGIN
        CASE 
            WHEN v = 'first choice' THEN
                RETURN 'one';
            WHEN v = 'second choice' THEN
                RETURN 'two';
            ELSE
                RETURN 'unexpected choice';
       END CASE;
    END;
$$
;

이 저장 프로시저를 호출하면 프로시저는 다음 출력을 생성합니다.

CALL case_demo_2('none of the above');
+-------------------+
| CASE_DEMO_2       |
|-------------------|
| unexpected choice |
+-------------------+