2016-08-31 1 views
-1

기본적으로 변수에 문자열을 저장하고 싶습니다. 그러나 조건에 따라 일부 변경되는 결과처럼 다른 장소에서 일부 콘텐츠를 가져 가고 싶습니다.문자열의 case 문

예.
저는 학생이 3 명 있습니다 - a, b, c. 그래서 여기있을 것입니다.

DECLARE @intro nvarchar(80) = 'Hi!!! My Name is ' + 
      CASE WHEN 'a' THEN 'Ashley' WHEN 'b' THEN 'Bernard' WHEN 'c' THEN 'Cassie' 

하지만 더하기 기호는 오류를 가져옵니다. 나는 다른 변수를 만들 수 있고 위에서 언급 한 case 문에 의해 값을 추가 할 수 있으며 case 문 대신 배치하지만 새로운 변수를 사용하지 않고 다른 방법이 있는지 알고 싶습니다. 당신은 당신의 case 문에 아무것도 비교되지 않는 사전

+0

'a'' 아무것도 테스트하지 않습니다 - 당신이 있는지 확인하기 위해 테스트 무엇을'할 때 전체 쿼리 및 오류 메시지 – Lamak

+0

'사건을 게시하시기 바랍니다 '는? 그것은'case somefield = 'a'then then ... '형태이거나'case somefield when'a 'then then ...'형태 여야합니다. 그리고 언급 한 바와 같이 case 문을 완성하기 위해'end' 키워드를 넣어야합니다. – SlimsGhost

+0

이것이 CASE 문을 사용하는 법을 배우기위한 클래스 할당이 아니라면 이것은 코드 냄새처럼 보입니다. 'INNER JOIN'을 수행하면서 이름 테이블을 만드는 것을 고려해보십시오. 또한 'CASE'의 문법은'CASE WHEN' ...'WHEN' 값에 대해 테스트 할'무언가'가 없습니다. –

답변

0

덕분에 ... 당신의 학생이 당신에 대해 검사 할 논리에 이제까지 무엇을 비교하는 대신 이런 일을하려고합니다.

DECLARE @student char(1) = 'b' 
DECLARE @intro nvarchar(80) = 'Hi!!! My Name is ' 
SET @intro = @intro + 
        CASE 
         WHEN @student = 'a' THEN 'Ashley' 
         WHEN @student = 'b' THEN 'Bernard' 
         WHEN @student = 'c' THEN 'Cassie' 
         ELSE '' 
        END 

SELECT @intro 
1

CASE WHEN 조건은 2 개의 값과 비교되어야합니다.

DECLARE @student char(1) = 'c' 
DECLARE @intro nvarchar(80) = 'Hi!!! My Name is ' + 
      CASE @student WHEN 'a' THEN 'Ashley' WHEN 'b' THEN 'Bernard' WHEN 'c' THEN 'Cassie' END 
SELECT @intro