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

Откуда: Челябинск
Сообщений: 173
Есть запрос вида
select * from Table
where id1 = @x1

and/or id2 = @x2 и т.д. много уловий
Подскажите как сделать так чтобы если переменная null, то условие опускалось?
31 июл 09, 07:14    [7482385]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Нектотам
Guest
Андрей Ч.
Есть запрос вида
select * from Table
where id1 = @x1

and/or id2 = @x2 и т.д. много уловий
Подскажите как сделать так чтобы если переменная null, то условие опускалось?

не самый эффективный, но рабочий вариант (для соединения по and)
where id1 = isnull(@x1,id1)
не работает, если (id1 is null)
31 июл 09, 07:34    [7482394]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Андрей Ч.
Есть запрос вида
select * from Table
where id1 = @x1

and/or id2 = @x2 и т.д. много уловий
Подскажите как сделать так чтобы если переменная null, то условие опускалось?
@x2 IS NULL OR id2=x2
31 июл 09, 08:47    [7482485]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
borin
Member

Откуда: angarsk/msk
Сообщений: 677
Андрей Ч.
Есть запрос вида
select * from Table
where id1 = @x1

and/or id2 = @x2 и т.д. много уловий
Подскажите как сделать так чтобы если переменная null, то условие опускалось?


можно внутри хранимки с параметрами собирать запрос динамически в переменную вроде
varchar(4000) @s
с учетом null-овости параметров хранимки,
а потом дергать его за хвост с помощью
exec(@s)
31 июл 09, 09:14    [7482585]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Андрей Ч.
Member

Откуда: Челябинск
Сообщений: 173
Всем спасибо разобрался.
31 июл 09, 09:28    [7482631]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
gR4mm
Member

Откуда: Москва
Сообщений: 1412
where id = case when @x1 is null then id esle @x1 end
31 июл 09, 10:10    [7482810]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
gR4mm
where id = case when @x1 is null then id esle @x1 end
Это не всегда правильно, ибо означает кроме всего прочего
id IS NOT NULL
31 июл 09, 10:18    [7482873]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
gR4mm
Member

Откуда: Москва
Сообщений: 1412
iap
gR4mm
where id = case when @x1 is null then id esle @x1 end
Это не всегда правильно, ибо означает кроме всего прочего
id IS NOT NULL
да, не учел. К тому же в первом ответе написано тоже самое.
31 июл 09, 19:05    [7486429]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить