如何运行如下所示的UPDATE,它只更新非空的列?
UPDATE Table
SET Name = @Name,
Email = @Email,
Phone = @Phone
WHERE id = @id
编辑:
因此,如果我使用上述更新,但会分配以下内容......
@Name = Tom
@Email = NULL
@Phone = NULL
因此,只有名称会被更新,电子邮件和电话数据库中的任何内容都将保留在数据库中。
答案 0 :(得分:5)
这个基本想法应该有效:
UPDATE Table
SET Name = ISNULL(@Name, Name),
Email = ISNULL(@Email, Email),
Phone = ISNULL(@Phone, Phone)
WHERE id = @id
因此,如果@Name
为NULL,则Name
保持不变。如果@Name
不为NULL,则会将其分配给Name
等...
---编辑---
当然@clintp,COALESCE变体看起来像这样:
UPDATE Table
SET Name = COALESCE(@Name, Name),
Email = COALESCE(@Email, Email),
Phone = COALESCE(@Phone, Phone)
WHERE id = @id
答案 1 :(得分:2)
如果我正确理解了这个问题:
SET Name = CASE WHEN Name IS NULL THEN NULL ELSE @Name END ...