在sql中@param IS NULL或value = @param是什么意思?

时间:2016-03-21 04:43:31

标签: sql-server

我正在SQL中编写一个存储过程,其中我有一个方案,如果参数为null,则获取所有记录;如果参数不为null,则获取匹配记录。在这种情况下,我总是使用ISNULL函数:

1458238937

但是在这种情况下,如果value不为null,则它可以正常工作,但如果value为null,则它将获取除table.value为null之外的所有记录。所以我搜索并找到了一个由sII回答的解决方案here。但我不明白这个说法  table.value = ISNULL(@param,table.value) 它适用于我,但我无法理解?这个怎么运作?在此先感谢您的回答。

1 个答案:

答案 0 :(得分:3)

以下是我对ALL IF NULL声明的理解。

案例1:如果参数@paramNULL

在这种情况下,All if NULL语句变为这样,

NULL IS NULL OR value= @param.

此处left语句的OR部分变为True,因此记录将根据该部分进行提取。所以查询变为,

SELECT *FROM TABLE WHERE NULL IS NULL与...相同 SELECT *FROM TABLE.因此它将获取所有记录。

案例2:如果参数@param具有值(比如值= 1)

在这种情况下,All if NULL语句变为这样,

1 IS NULL OR value= 1.

此处left语句的OR部分变为False,因此记录将根据right部分进行提取。 所以查询变为,

SELECT *FROM TABLE WHERE value= 1.

希望你明白现在......