SQL确定参数是否具有值

时间:2011-03-10 15:51:55

标签: sql sql-server parameters if-statement

如何使用IF语句确定多个参数是否具有值然后执行某些操作,如果只有一个参数具有值,则执行其他操作。这有可能与SQL if?我只是想确定一个参数是否有值,或者多个参数是否有值,因为如果是,那么我需要做一些完全不同的事情。我试过制作一个SQL语句,但它没有正常工作。有人能指出我正确的方向吗?

5 个答案:

答案 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