[SQL] SQL CASE 표현식 구문?
SQLSQL CASE 표현식 구문?
는 SQL CASE 표현식에 대한 완전하고 정확한 구문은 무엇입니까?
해결법
-
==============================
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.여러 제품을 사용하면 태그 고려, 전체 올바른 구문이 하나가 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.다음은 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.사이베이스는 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.저도 같은에 대한 오라클의 페이지를 발굴이 단지 약간 다른 설명, 동일한 구문 것 같습니다.
저도 같은에 대한 오라클의 페이지를 발굴이 단지 약간 다른 설명, 동일한 구문 것 같습니다.
링크 : 오라클 / PLSQL : 사례 문
-
==============================
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.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
from https://stackoverflow.com/questions/4622/sql-case-expression-syntax by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 인간화 또는 자연수 혼합 된 단어 및 번호 문자열의 정렬 (0) | 2020.03.27 |
---|---|
[SQL] MySQL의 - 피연산자 1 열 (들)을 포함해야 (0) | 2020.03.27 |
[SQL] 마이크로 소프트 SQL 서버 2000 에뮬레이션 MySQL의 LIMIT 절 (0) | 2020.03.27 |
[SQL] SQL은 : 테이블에 ID를 누락을 발견 한 (0) | 2020.03.27 |
[SQL] 두 데이터베이스 사이에 외래 키 관계를 추가 (0) | 2020.03.27 |