3

我创建表

CREATE TABLE tbl
(
ID int,
FirstName nvarchar(50),
LastName nvarchar(50)
)

有存储过程在哪里

UPDATE tbl
SET FistName = @firstName  , LastName = @lastName
WHERE ID = @ID

现在,当我调用我的存储过程时, exec myProc 1,'John',''只想更新我写的那些列。例如,如果我的表中有值:

ID : 1
FirstName: Bob
LastName : Brown

在 exec 之后它必须是

ID : 1
FirstName: John
LastName : Brown
4

1 回答 1

8

尝试这个:

UPDATE tbl
SET FirstName = 
case 
    when @firstName is null or @firstName = '' then firstName 
    else @firstName
end,
LastName = 
case 
    when @lastName is null or @lastName = '' then lastName 
    else @lastName
end
WHERE ID = @ID

一般是正确管理NULL和空字符串值

于 2013-07-30T13:46:02.723 回答