Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Как сделать через IF или CASE


Автор: Abbath1349 19.5.2011, 10:33
Поскажите как можно через Case или IF установить значение переменной. Нужно,чтобы если перемнная=NULL то ей присваивается некое значение

Автор: Akina 19.5.2011, 11:21
Какая переменная? Где? в клиентской программе на Дельфи? В среде пользователя на сервере?

Автор: Abbath1349 19.5.2011, 14:05
Код

IF(@Min_Price IS NULL AND @Max_price IS NOT NULL)
SET @Min_Price=@MINIMAL_PRICE
ELSE IF(@Max_price IS NULL AND @Min_Price IS NOT NULL)
SET @Max_price=@MAXIMAL_PRICE
ELSE IF(@Min_Price IS NULL AND @Max_price IS NULL)
BEGIN
SET @Min_Price=@MINIMAL_PRICE 
SET @Max_price=@MAXIMAL_PRICE
END

как это только через CASE

Автор: Akina 19.5.2011, 15:03
Код

IF @Min_Price IS NULL
  SET @Min_Price=@MINIMAL_PRICE
IF @Max_price IS NULL
  SET @Max_price=@MAXIMAL_PRICE
cделает ровно то же самое. 
И зачем тут непременно CASE?

Автор: Abbath1349 19.5.2011, 16:39
Ну читал,что CASE быстрее врод как работает) Да и так интересно как это через case можно)

Автор: Akina 19.5.2011, 16:53
Цитата(Abbath1349 @  19.5.2011,  17:39 Найти цитируемый пост)
читал,что CASE быстрее врод как работает

В MSDN? если да - ссылку в студию. Если нет - забудь.

Цитата(Abbath1349 @  19.5.2011,  17:39 Найти цитируемый пост)
интересно как это через case можно

CASE обрабатывает варианты значений одного выражения. У тебя же - два несвязанных выражения. Посему на вопрос "как" можно ответить только одно - "через задницу".

Автор: pengrad 1.6.2011, 16:51
Код

select @Min_Price = case when @Min_Price is null then @MINIMAL_PRICE else @Min_Price end,
    @Max_Price = case when @Max_Price is null then @MAXIMAL_PRICE else @Max_Price end


или 

Код

select @Min_Price = isnull(@Min_Price,@MINIMAL_PRICE),
    @Max_Price = isnull(@Max_Price,@MAXIMAL_PRICE)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)