Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не учитываемый параметр  [new]
,,,!!!
Guest
Подскажите как сделать параметр который не должен учитываться если он пуст (имеет значение Null).
К примеру, если в нижеприведенном коде param1 равен null, то не учитывать его в условии запроса?

DECLARE @PeriodFrom datetime
DECLARE @PeriodTo datetime
DECLARE @Param1 int = null
DECLARE @Param2 int = 1

SET @PeriodFrom = N'01.01.2013'
SET @PeriodTo = N'08.01.2013'

SELECT *
		FROM [dbo].[EventStatuses]
		WHERE
			 DateModified BETWEEN @PeriodFrom AND @PeriodTo AND 
			 Field1 = @Param1	AND Field2 = @Param2		
26 июл 13, 13:38    [14621812]     Ответить | Цитировать Сообщить модератору
 Re: Не учитываемый параметр  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
,,,!!!,

Field1 = isnull( @Param1, Field1)
26 июл 13, 13:39    [14621823]     Ответить | Цитировать Сообщить модератору
 Re: Не учитываемый параметр  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
StarikNavy
,,,!!!,

Field1 = isnull( @Param1, Field1)
Это исключает Field1 IS NULL
(@Param1 IS NULL OR Field1=@Param1)
26 июл 13, 13:46    [14621860]     Ответить | Цитировать Сообщить модератору
 Re: Не учитываемый параметр  [new]
Гость333
Member

Откуда:
Сообщений: 3683
StarikNavy
,,,!!!,

Field1 = isnull( @Param1, Field1)

Не пройдёт, если Field1 может содержать NULL.
AND (Field1 = @Param1 OR @Param1 IS NULL)
26 июл 13, 13:48    [14621869]     Ответить | Цитировать Сообщить модератору
 Re: Не учитываемый параметр  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
И проблема получения только Field1 IS NULL
26 июл 13, 13:51    [14621898]     Ответить | Цитировать Сообщить модератору
 Re: Не учитываемый параметр  [new]
...!!!
Guest
Всем спасибо за участие решил сделать через подстановку

string @query
string @query_param1
string @query_param2 

@query = "DECLARE @PeriodFrom datetime
DECLARE @PeriodTo datetime
DECLARE @Param1 int = null
DECLARE @Param2 int = 1

SET @PeriodFrom = N'01.01.2013'
SET @PeriodTo = N'08.01.2013'

SET string @query = 'SELECT *
		FROM [dbo].[EventStatuses]
		WHERE
			 DateModified BETWEEN @PeriodFrom AND @PeriodTo'

IF @Param1 is null
@query_param1 = 'And 1=1'
ELSE @query_param1 = 'AND 
			 Field1 = @Param1'


и т.д.
26 июл 13, 14:41    [14622237]     Ответить | Цитировать Сообщить модератору
 Re: Не учитываемый параметр  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2415
iap, Гость333,

да, действительно, вспылил, был не прав )
26 июл 13, 15:04    [14622425]     Ответить | Цитировать Сообщить модератору
 Re: Не учитываемый параметр  [new]
...!!!
Guest
Гость333
StarikNavy
,,,!!!,

Field1 = isnull( @Param1, Field1)

Не пройдёт, если Field1 может содержать NULL.
AND (Field1 = @Param1 OR @Param1 IS NULL)


Извиняюсь не сразу понял что написано все из-за скобок, так думаю нагляднее будет:

AND (
(Field1 = @Param1) OR (@Param1 IS NULL)
)


PS: Спасибо за помощь!
26 июл 13, 15:53    [14622916]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить