如何使用IF
语句确定多个参数是否具有值然后执行某些操作,如果只有一个参数具有值,则执行其他操作。这有可能与SQL if?我只是想确定一个参数是否有值,或者多个参数是否有值,因为如果是,那么我需要做一些完全不同的事情。我试过制作一个SQL语句,但它没有正常工作。有人能指出我正确的方向吗?
答案 0 :(得分:11)
在SQL中检查参数是否有值,您应该将该值与NULL进行比较。 这是一个稍微过度设计的例子:
Declare @Param1 int
Declare @param2 int = 3
IF (@Param1 is null AND @param2 is null)
BEGIN
PRINT 'Both params are null'
END
ELSE
BEGIN
IF (@Param1 is null)
PRINT 'param1 is null'
ELSE
IF (@Param2 is null)
PRINT 'param2 is null'
ELSE
PRINT 'Both params are set'
END
答案 1 :(得分:2)
您可以检查NULL值的参数值。但是我觉得乍一看你应该在进入SQL之前检查参数......
一旦知道了你需要做什么,就调用那个SQL或存储过程。
如果你这样做,你可以简化你的SQL,因为你只传递了你真正需要传递的参数。
实际上,我越是想到这一点就越重要。您可以将NULL值用于其他方式。
简单示例:获取员工列表。员工处于活动状态或非活动状态 - 传递@IsActive布尔参数(如果为true则仅显示活动员工,如果为false则仅显示非活动员工,如果为NULL则显示所有员工)
答案 2 :(得分:1)
在T-SQL中,您可以使用ISNULL函数。
答案 3 :(得分:1)
这是一个例子
if @param1 = 'this value' and @param2 = 'another value'
begin
-- do things here
end
else if @param1 = 'something else'
begin
-- do other work
end
else
-- do different things
答案 4 :(得分:0)
@ Catch22提供的答案对你的问题有好处。但是,IF
中特别使用sql
和一般程序例程应该保持在最低限度。因此,使用case
语句的以下解决方案可能更适合您想要做的事情:
select Case When @Param1 is null and @Param2 is null Then ...-- both params null
When @Param1 is null then .... -- param1 is null
When @Param2 is null then .... -- param2 is null
Else .... -- both params set
End