복붙노트

[SQL] SQL CASE 표현식 구문?

SQL

SQL CASE 표현식 구문?

는 SQL CASE 표현식에 대한 완전하고 정확한 구문은 무엇입니까?

해결법

  1. ==============================

    1.전체 구문은 작업중인 데이터베이스 엔진에 따라 달라집니다

    전체 구문은 작업중인 데이터베이스 엔진에 따라 달라집니다

    SQL Server의 경우 :

    CASE case-expression
        WHEN when-expression-1 THEN value-1
      [ WHEN when-expression-n THEN value-n ... ]
      [ ELSE else-value ]
    END
    

    또는:

    CASE
        WHEN boolean-when-expression-1 THEN value-1
      [ WHEN boolean-when-expression-n THEN value-n ... ]
      [ ELSE else-value ]
    END
    

    표현 등 :

    case-expression    - something that produces a value
    when-expression-x  - something that is compared against the case-expression
    value-1            - the result of the CASE statement if:
                             the when-expression == case-expression
                          OR the boolean-when-expression == TRUE
    boolean-when-exp.. - something that produces a TRUE/FALSE answer
    

    링크 : CASE (Transact-SQL)를 참조하십시오

    또한 언제 문장의 순서가 중요 있습니다. 당신은 쉽게 겹치는 여러 절을 작성하고 일치를 사용하는 첫 번째 수 있습니다.

    참고 : ELSE 절이 지정되지 않고, 조건이 언제 발견 일치는, CASE 표현식의 값이 NULL이되지 않습니다.

  2. ==============================

    2.여러 제품을 사용하면 태그 고려, 전체 올바른 구문이 하나가 ISO / ANSI SQL-92 표준에서 발견 될 것이다라고 말하고 싶지만 :

    여러 제품을 사용하면 태그 고려, 전체 올바른 구문이 하나가 ISO / ANSI SQL-92 표준에서 발견 될 것이다라고 말하고 싶지만 :

    <case expression> ::=
           <case abbreviation>
         | <case specification>
    
    <case abbreviation> ::=
           NULLIF <left paren> <value expression> <comma>
                  <value expression> <right paren>
         | COALESCE <left paren> <value expression>
                    { <comma> <value expression> }... <right paren>
    
    <case specification> ::=
           <simple case>
         | <searched case>
    
    <simple case> ::=
         CASE <case operand>
              <simple when clause>...
            [ <else clause> ]
         END
    
    <searched case> ::=
         CASE
           <searched when clause>...
         [ <else clause> ]
         END
    
    <simple when clause> ::= WHEN <when operand> THEN <result>
    
    <searched when clause> ::= WHEN <search condition> THEN <result>
    
    <else clause> ::= ELSE <result>
    
    <case operand> ::= <value expression>
    
    <when operand> ::= <value expression>
    
    <result> ::= <result expression> | NULL
    
    <result expression> ::= <value expression>
    

    구문 규칙

    1) NULLIF (V1, V2) is equivalent to the following <case specification>:
    
         CASE WHEN V1=V2 THEN NULL ELSE V1 END
    
    2) COALESCE (V1, V2) is equivalent to the following <case specification>:
    
         CASE WHEN V1 IS NOT NULL THEN V1 ELSE V2 END
    
    3) COALESCE (V1, V2, . . . ,n ), for n >= 3, is equivalent to the
       following <case specification>:
    
         CASE WHEN V1 IS NOT NULL THEN V1 ELSE COALESCE (V2, . . . ,n )
         END
    
    4) If a <case specification> specifies a <simple case>, then let CO
       be the <case operand>:
    
       a) The data type of each <when operand> WO shall be comparable
          with the data type of the <case operand>.
    
       b) The <case specification> is equivalent to a <searched case>
          in which each <searched when clause> specifies a <search
          condition> of the form "CO=WO".
    
    5) At least one <result> in a <case specification> shall specify a
       <result expression>.
    
    6) If an <else clause> is not specified, then ELSE NULL is im-
       plicit.
    
    7) The data type of a <case specification> is determined by ap-
       plying Subclause 9.3, "Set operation result data types", to the
       data types of all <result expression>s in the <case specifica-
       tion>.
    
    Access Rules
    
       None.
    
    General Rules
    
    1) Case:
    
       a) If a <result> specifies NULL, then its value is the null
          value.
    
       b) If a <result> specifies a <value expression>, then its value
          is the value of that <value expression>.
    
    2) Case:
    
       a) If the <search condition> of some <searched when clause> in
          a <case specification> is true, then the value of the <case
          specification> is the value of the <result> of the first
          (leftmost) <searched when clause> whose <search condition> is
          true, cast as the data type of the <case specification>.
    
       b) If no <search condition> in a <case specification> is true,
          then the value of the <case expression> is the value of the
          <result> of the explicit or implicit <else clause>, cast as
          the data type of the <case specification>.
    
  3. ==============================

    3.다음은 PostgreSQL의 문서 (포스트 그레스 여기에 SQL 표준을 따르는)에서 CASE 문 예는 다음과 같습니다

    다음은 PostgreSQL의 문서 (포스트 그레스 여기에 SQL 표준을 따르는)에서 CASE 문 예는 다음과 같습니다

    SELECT a,
       CASE WHEN a=1 THEN 'one'
            WHEN a=2 THEN 'two'
            ELSE 'other'
       END
    FROM test;
    

    또는

    SELECT a,
       CASE a WHEN 1 THEN 'one'
              WHEN 2 THEN 'two'
              ELSE 'other'
       END
    FROM test;
    

    그냥 가능한 값의 목록에 대해 하나 개의 필드를 점검 할 때 분명히 두 번째 형태는 청소기입니다. 첫 번째 형태는 좀 더 복잡한 표현을 할 수 있습니다.

  4. ==============================

    4.사이베이스는 SQL Server와 같은 경우의 구문 :

    사이베이스는 SQL Server와 같은 경우의 구문 :

    조건 SQL 표현식을 지원합니다; 값 식을 사용할 수 있습니다 사용 어디서나 할 수 있습니다.

    case 
         when search_condition then expression 
        [when search_condition then expression]...
        [else expression]
    end
    
    case expression
         when expression then expression 
        [when expression then expression]...
        [else expression]
    end
    

    경우 식을 시작합니다.

    선행 검색 조건 또는 식을 비교합니다.

    선택된 결과에 대해 설정된 조건에 사용된다. 경우 식의 검색 조건이 where 절에 검색 조건과 유사하다. 검색 조건은 Transact-SQL 사용 설명서에 자세히 설명되어 있습니다.

    식 케이스 지정 그 결과 값을 선행한다.

    열 이름, 상수, 함수, 서브 쿼리, 또는 산술 비트 연산자에 의해 연결된 열 이름, 상수 및 기능의 임의의 조합이다. 표현식에 대한 자세한 내용은 "표현식"을 참조하십시오.

    select disaster, 
           case
                when disaster = "earthquake" 
                    then "stand in doorway"
                when disaster = "nuclear apocalypse" 
                    then "hide in basement"
                when monster = "zombie apocalypse" 
                    then "hide with Chuck Norris"
                else
                    then "ask mom"
           end 
      from endoftheworld
    
  5. ==============================

    5.저도 같은에 대한 오라클의 페이지를 발굴이 단지 약간 다른 설명, 동일한 구문 것 같습니다.

    저도 같은에 대한 오라클의 페이지를 발굴이 단지 약간 다른 설명, 동일한 구문 것 같습니다.

    링크 : 오라클 / PLSQL : 사례 문

  6. ==============================

    6.11g 문서에서 오라클 구문 :

    11g 문서에서 오라클 구문 :

    CASE { simple_case_expression | searched_case_expression }
         [ else_clause ]
         END
    

    simple_case_expression

    expr { WHEN comparison_expr THEN return_expr }...
    

    searched_case_expression

    { WHEN condition THEN return_expr }...
    

    else_clause

    ELSE else_expr
    
  7. ==============================

    7.SQL Server의 사례 문 구문 :

    SQL Server의 사례 문 구문 :

    CASE column
       WHEN value1 THEN 1
       WHEN value3 THEN 2
       WHEN value3 THEN 3
       WHEN value1 THEN 4
       ELSE ''
    END
    

    그리고 우리는 또한 아래와 같이 사용할 수 있습니다 :

    CASE 
       WHEN column=value1 THEN 1
       WHEN column=value3 THEN 2
       WHEN column=value3 THEN 3
       WHEN column=value1 THEN 4
       ELSE ''
    END
    
  8. from https://stackoverflow.com/questions/4622/sql-case-expression-syntax by cc-by-sa and MIT license