oJM*_*86o 0 sql sql-server-2005
我有一个案例陈述:
UPDATE
Answer
SET
AnswerID = @AnswerID,
AnsweredBy = CASE WHEN LEN(@AnsweredBy) > 0 THEN @AnsweredBy END
Run Code Online (Sandbox Code Playgroud)
即使@AnsweredBy是NULL仍设置AnsweredBy列设置为空.
我试图通过这样做来测试null:
UPDATE
Answer
SET
AnswerID = @AnswerID,
AnsweredBy = CASE WHEN @AnsweredBy IS NOT NULL THEN @AnsweredBy END
Run Code Online (Sandbox Code Playgroud)
含义answeredby除非有值,否则我不想更新列.
即使在我的C#代码中,我也没有将值传递给我的存储过程:
if (answeredBy.Length > 0)
cmdSelect.Parameters.Add("@AnsweredBy", SqlDbType.VarChar).Value = answeredBy;
Run Code Online (Sandbox Code Playgroud)
除非有价值.在我的sproc中,我将该列变量默认为null:
@RunoffAnswerID bigint,
@AnswerID varchar(3)=NULL,
@AnsweredBy varchar(50)=NULL,
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我如何执行其余的更新,因为有大约5-10个列但只更新了answeredby如果有值@AnsweredBy?