如果参数为null,则从表中提取结果

时间:2014-04-29 18:26:36

标签: sql tsql

这可能是一个愚蠢的问题,但我还没有找到方法来说明这个问题以获得适合我想要完成的答案。我可能只是有一个愚蠢的时刻。

我有一个sproc的输入变量;输入变量可以作为null传递。

如果值为null,我想在临时表中插入另一个表中的值列表。否则,我只想在参数表中插入参数值。

我尝试做的事情是这样的

INSERT INTO @tempTable
SELECT (CASE WHEN @myVariable IS NULL 
             THEN (SELECT [myVariable] FROM myTable) 
             ELSE @myVariable END)

这不会起作用,因为选择语句会收回大量结果(并且它的结果不正确),但这是一般的想法。我基本上想要一个可选参数,用户可以在其中指定特定ID,或者取回所有ID。

有没有人对最佳方法有任何建议?

谢谢!

3 个答案:

答案 0 :(得分:2)

我认为这个UNION会做

INSERT INTO @tempTable
SELECT @myVariable WHERE @myVariable IS NOT NULL
UNION
SELECT [myVariable] FROM myTable WHERE @myVariable IS NULL

当然,如果它不是一个查询 - 你可以使用简单的IF逻辑

IF @myVariable IS NULL
   INSERT INTO @tempTable
   SELECT [myVariable] FROM myTable
ELSE
   INSERT INTO @tempTable
   SELECT @myVariable

答案 1 :(得分:1)

这样的事情对你有用吗?

SELECT DISTINCT ISNULL(@myVariable, myVariableColumn) 
FROM myTable

答案 2 :(得分:0)

我建议这个查询:

INSERT INTO @tempTable
SELECT CASE WHEN @myVariable IS NULL Then [myVariable] else @myVariable end FROM myTable