【发布时间】:2016-01-07 19:27:17
【问题描述】:
我有这部分查询,我正在执行此操作。
FROM #Table2 WHERE Attribute = ISNULL('+@Attrb+', Attribute)) AS D
显然这对我不起作用,因为@Attr 可以带入字符串或可以为空。有没有更好的方法来处理这个? 我需要的是,这是一个传递给这个存储过程的参数。有两种可能的选择(或第三种为空)。我允许用户输入。你会如何解决这个问题?
谢谢。
【问题讨论】:
-
ISNULL function 执行以下操作: 检查第一个参数是否为
IS NULL;如果是则返回第二个参数,否则返回第一个。由于您的第一个参数不是NULL,它总是会返回第二个。总帐。 -
如果您想检查 @attrb 变量值是否为 null,您可以使用如下查询:
WHERE (@Attrb IS NOT NULL AND Attribute = @Attrb) -
为了澄清我的目标,我想接受空值和其他两个文本字符串。如果用户什么都不提供(一个空字符串),我将显示所有没有过滤的记录。
标签: sql-server stored-procedures