即使我不希望它发生,列的更新也会发生

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)

即使@AnsweredByNULL仍设置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

Sea*_*ean 6

SET AnsweredBy = ISNULL(@AnsweredBy, AnsweredBy)
Run Code Online (Sandbox Code Playgroud)