Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите пожалуйста с case  [new]
MasterZ
Member

Откуда: Москва
Сообщений: 1145
case @value
		when 'A' then	
		------------------------------------
			
		when ('A') [color=red][b]or[/b][/color] ('B')  then
		
		----------------------	
		
		when  'C' then
			------------------------
		else ''					
	end

такая конструкция не работает, чем заменить or?
25 май 09, 12:44    [7222361]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с case  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Такая конструкция бессмысленна, потому что до второго WHEN не дойдёт, если @value='A'.
У CASE есть две формы:
CASE @value WHEN 'A' THEN ... WHEN 'B' THEN ... WHEN 'C' THEN ... END
и
CASE  WHEN @value='A' OR @value='B' THEN ... WHEN @value='C' THEN ... END
25 май 09, 13:02    [7222489]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с case  [new]
MasterZ
Member

Откуда: Москва
Сообщений: 1145
iap
Такая конструкция бессмысленна, потому что до второго WHEN не дойдёт, если @value='A'.
У CASE есть две формы:
CASE @value WHEN 'A' THEN ... WHEN 'B' THEN ... WHEN 'C' THEN ... END
и
CASE  WHEN @value='A' OR @value='B' THEN ... WHEN @value='C' THEN ... END


Понятно, еще вопрос
во втором случае, срабатывает первое попавшееся правильное условие и дальше условия не проверяются? Или выполняются все правильные условия?
26 май 09, 09:30    [7226316]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с case  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
MasterZ
iap
Такая конструкция бессмысленна, потому что до второго WHEN не дойдёт, если @value='A'.
У CASE есть две формы:
CASE @value WHEN 'A' THEN ... WHEN 'B' THEN ... WHEN 'C' THEN ... END
и
CASE  WHEN @value='A' OR @value='B' THEN ... WHEN @value='C' THEN ... END


Понятно, еще вопрос
во втором случае, срабатывает первое попавшееся правильное условие и дальше условия не проверяются? Или выполняются все правильные условия?

Я думаю, что последнее (не проверял). Лучше написать правильно условия, чтобы одно значение не удовлетворяло условиям двух или нескольких проверок.
26 май 09, 09:34    [7226337]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с case  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Так трудно проверить?
declare @i int

set @i = 2

select
	case
		when @i = 1 or @i = 2 then '1 or 2'
		when @i = 2 then '2'
		else 'not 1 and not 2'
	end


Сообщение было отредактировано: 26 май 09, 09:40
26 май 09, 09:39    [7226362]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с case  [new]
Сид
Member

Откуда: Москва
Сообщений: 305
tpg
Так трудно проверить?
declare @i int

set @i = 2

select
	case
		when @i = 1 or @i = 2 then '1 or 2'
		when @i = 2 then '2'
		else 'not 1 and not 2'
	end

1 or 2
Может, будут другие варианты?
26 май 09, 10:39    [7226784]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с case  [new]
iljy
Guest
Сид
MasterZ
iap
Такая конструкция бессмысленна, потому что до второго WHEN не дойдёт, если @value='A'.
У CASE есть две формы:
CASE @value WHEN 'A' THEN ... WHEN 'B' THEN ... WHEN 'C' THEN ... END
и
CASE  WHEN @value='A' OR @value='B' THEN ... WHEN @value='C' THEN ... END


Понятно, еще вопрос
во втором случае, срабатывает первое попавшееся правильное условие и дальше условия не проверяются? Или выполняются все правильные условия?

Я думаю, что последнее (не проверял). Лучше написать правильно условия, чтобы одно значение не удовлетворяло условиям двух или нескольких проверок.

А если подумать? case - это оператор арифметического ветвления, по определению возвращает одно значение, как могут выполниться два условия?
26 май 09, 10:48    [7226902]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с case  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
MasterZ
iap
Такая конструкция бессмысленна, потому что до второго WHEN не дойдёт, если @value='A'.
У CASE есть две формы:
CASE @value WHEN 'A' THEN ... WHEN 'B' THEN ... WHEN 'C' THEN ... END
и
CASE  WHEN @value='A' OR @value='B' THEN ... WHEN @value='C' THEN ... END


Понятно, еще вопрос
во втором случае, срабатывает первое попавшееся правильное условие и дальше условия не проверяются? Или выполняются все правильные условия?
Всегда первое истинное слева направо!
26 май 09, 10:55    [7226975]     Ответить | Цитировать Сообщить модератору
 Re: Помогите пожалуйста с case  [new]
Saller
Member

Откуда: exUSSR
Сообщений: 1141
MasterZ
iap
Такая конструкция бессмысленна, потому что до второго WHEN не дойдёт, если @value='A'.
У CASE есть две формы:
CASE @value WHEN 'A' THEN ... WHEN 'B' THEN ... WHEN 'C' THEN ... END
и
CASE  WHEN @value='A' OR @value='B' THEN ... WHEN @value='C' THEN ... END


Понятно, еще вопрос
во втором случае, срабатывает первое попавшееся правильное условие и дальше условия не проверяются? Или выполняются все правильные условия?

А смысл если первое условие отработало?
26 май 09, 11:48    [7227426]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить