更清洁的插入方式

时间:2014-12-22 22:35:33

标签: sql sql-server

这是我的存储过程中的脚本

IF(@Param1+@Param2 = 0)
BEGIN
    INSERT INTO @TempTable values ('value1',null);
END
ELSE
BEGIN 
    INSERT INTO @TempTable values ('value2',@Param1+@Param2);
END

是否有更简洁的方法在不使用if和else的情况下进行插入。我的存储过程中有很多这样的计算。所以我想避免if和else。

2 个答案:

答案 0 :(得分:4)

你可以在

时使用案例
INSERT INTO @TempTable VALUES
  (CASE WHEN @Param1 + Param2 = 0 THEN 'value1' ELSE 'value2' END,
  CASE WHEN @Param1 + Param2 = 0 THEN NULL ELSE @PARAM1 + @PARAM2 END)

答案 1 :(得分:3)

以下是使用nullif()编写此内容的方法:

INSERT INTO @TempTable
    SELECT 'value1', NULLIF(@Param1 + @Param2, 0);

您应该明确列出插入列中的列:

INSERT INTO @TempTable(col1, col2)
    SELECT 'value1', NULLIF(@Param1 + @Param2, 0);