Sql где пункт - PullRequest
       13

Sql где пункт

1 голос
/ 09 ноября 2011

У меня есть хранимая процедура, в которой я передаю значение, которое будет использоваться в операторе выбора в предложении where.

Если значение, которое я передаю, равно NULL, я не хочу, чтобы оно было частью той части предложения where, где оно используется.В приведенном ниже примере variable2 - это переменная, которую я передаю хранимой процедуре и использую в операторе sql, но если @ variable2 имеет значение NULL, я не хочу использовать variable2 = @ val1 в предложении where.Пример:

select Field1, Field2 from tbl1
where variable2= @val1
and ID = 'test'

Ответы [ 4 ]

0 голосов
/ 09 ноября 2011

Ваше предложение WHERE должно иметь столбец с левой стороны, и это может иметь место, но вы называете его variable2. Это будет работать, учитывая конкретные параметры:

select Field1, Field2
from tbl1
where yourColumn = 
case
    when @param1 is null
    then @param2
end

Я использовал общее имя поля и имена параметров, но вы должны понять.

0 голосов
/ 09 ноября 2011

Как насчет:

select Field1, Field2 from tbl1
where (@val1 IS NULL or variable2 = @val1)
and ID = 'test'
0 голосов
/ 09 ноября 2011

Попробуйте:

where (@val1 is null or variable2 = @val1)
and ID = 'test'
0 голосов
/ 09 ноября 2011
select Field1, Field2 from tbl1 
where (variable2= @val1 or @val1 is null)
and ID = 'test' 
...