2016-08-31 3 views
-1

В принципе, я хочу сохранить строку в переменной. Но я хочу взять контент из других мест, например, некоторые изменения результатов в зависимости от условий.case 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, но я хотел бы знать, есть ли другой способ сделать это без использования новой переменной?

Заранее спасибо

+0

пожалуйста, напишите весь запрос и сообщение об ошибке – Lamak

+0

'случай, когда«a'' ничего не проверить - что вы тестирование, чтобы увидеть, если это „а“? Он должен быть либо в форме 'case when somefield = 'a' then ...' или, альтернативно, 'case somefield when 'a' then ...'. И, как уже упоминалось, вы должны поместить ключевое слово 'end' для завершения оператора case – SlimsGhost

+0

Если это не присвоение класса, предназначенное для вас, чтобы узнать, как использовать оператор' CASE', это выглядит как запах кода для меня. Подумайте о создании таблицы имен, сделав «INNER JOIN». Также синтаксисом для 'CASE' является' CASE WHEN' ... Вы пропускаете 'something', который будет протестирован против значений' 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