2014-11-14 3 views

ответ

1
create procedure dbo.sp1 
(
    @p1 int = null 
) 
as 
begin 
select f1, f2, f3 
from dbo.table1 where(@p1 is not null and [email protected]) 
end 

ИЛИ

Вы можете использовать

Здесь запрос возвращает все строки, если @p1 равно нулю (Потому что @ p1 вернуться true когда NULL)

create procedure dbo.sp1 
(
    @p1 int = null 
) 
as 
begin 
select f1, f2, f3 
from dbo.table1 where(@p1 is null OR [email protected]) 
end 
+0

Но я хочу выбрать все строки, когда @ p1 имеет значение null! – Jalil

+0

@Jalil Вы можете использовать второй номер –

+1

@Jalil. Тогда вы должны были сделать это требование явно в своем вопросе – Lamak

1

Попробуйте это. where clause будет работать только тогда, когда @p1 is not null

SELECT f1, 
     f2, 
     f3 
FROM dbo.table1 
WHERE @p1 IS NOT NULL 
     AND f1 = @p1 

Если вы хотите вернуть все значения, если @ p1 равно нулю, то просто ISNULL функция. Если @ p1 равно Not Null, тогда [email protected] значения будут возвращены еще, все значения будут возвращены. Попробуйте

SELECT f1, 
     f2, 
     f3 
FROM dbo.table1 
WHERE f1 = isnull(@p1,f1) 
+0

Возможно, нет кода для запуска, но это немного упрощает понимание ваших намерений. – user2366842

1

В case @ p1 имеет значение null, ниже будет возвращено все, и если есть s значение, оно применит условие.

WHERE @p1 is NULL OR [email protected] 
Смежные вопросы