2017-03-28 2 views
1

'name'변수가 포함 된 'neighbors'라는 테이블이 있고 이름을 선택하고 CASE 문을 사용하여 두 번째 변수 'age'에 값을 할당한다고 가정 해 봅시다.SQL 쿼리에서 CASE 문 실행

1) 간단한 CASE 식 :

CASE name 
     WHEN 'George' THEN 36 
     WHEN 'Alfred' THEN 40 
     ELSE null 
    END as age 

2) 검색 CASE 식 :

CASE 
     WHEN name = 'George' THEN 36 
     WHEN name = 'Alfred' THEN 40 
     ELSE null  
    END as age 

두 개의 문이 하나가 SQL의 CASE 문에 사용할 수있는 구문은 두 개의 서로 다른 형태를 취 같은 일을하고있다. 제 질문은,이 진술들이 어떻게 기억에서 다루어 지는지입니다. 그것들이 동일하게 취급 되었는가, 아니면 다른 것보다 더 효율적 일 수 있는가?

https://docs.microsoft.com/en-us/sql/t-sql/language-elements/case-transact-sql

+1

어느 CASE 표현처럼 여러 조건을 평가할 수있는 두 번째 방법 확실하지 내가 @JohnHC 수정에 따라 구문을 편집 유효한 T-SQL –

+0

입니다. 질문은 의미합니다. –

답변

1

올바른 구문 중

CASE name 
    WHEN 'George' THEN 36 
    WHEN 'Alfred' THEN 40 
    ELSE null 
END as age 

또는

이다
CASE 
    WHEN name = 'George' THEN 36 
    WHEN name = 'Alfred' THEN 40 
    ELSE null 
END as age 
후자의 이점은 그것이 여러 열을 평가할 수 있다는 것이다

:

CASE 
    WHEN name = 'George' and OtherColumn = 'Stuff' THEN 36 
    WHEN 'Alfred' THEN 40 
    ELSE null 
END as age 
+0

내가 제공 한 올바른 구문을 사용하도록 내 원래 게시물을 편집했습니다. 그러나, 내 질문은 남아있다. –

+0

@silent_spec 이와 같은 간단한 경우 성능면에서 차이가 없습니다. 더 복잡한 시나리오에 대해서는 [here] (https://sqlperformance.com/2014/06/t-sql-queries/dirty-secrets-of-the-case-expression)을 읽으십시오. – JohnHC

+0

검색된 case 표현식이 'name '를 두 번 메모리에 두는 반면 간단한 표현식은 단 한 번만 읽습니다. 'name'이 클 경우 열이 메모리로 읽히는 방법 /시기에 따라 성능 차이가 발생할 수 있습니다. 그게 내가 알아 내려고하는거야 .. –

0

는 메모리 표현이나 성능하지만

case 
    when condition1 and (condition2 or condition3) then blah 
    else blah blah 
end