包含条件判断的更新语句

Shuang 220 信誉分
2025-01-27T02:26:26.0233333+00:00

想要实现下面这个更新逻辑:

UPDATE MyTable 
    IF Val = @Default_Value 
    THEN SET Val = NULL
    ELSE SET Val = @Default_Value 
WHERE id = @id

SQL是否支持这样的条件判断式的更新?

SQL Server
SQL Server
Microsoft 关系数据库管理和分析系统的一个系列,用于实现电子商务、业务线和数据仓库解决方案。
202 个问题
Transact-SQL
Transact-SQL
ANSI SQL 语言的 Microsoft 扩展,包括过程编程、局部变量和各种支持函数。
28 个问题
0 个注释 无注释
{count} 票

接受的答案
  1. LiHongMSFT-4306 30,361 信誉分
    2025-01-27T02:47:17.85+00:00

    你好,

    SQL是否支持这样的条件判断式的更新?

    是支持的。根据你的问题描述,我觉得这里可以使用CASE WHEN或者NULLIF来进行判断。

    像这样:

    UPDATE MyTable 
    SET Val = CASE WHEN Val <> @Default_Value 
                   THEN @Default_Value ELSE NULL END
    WHERE id = @id
    

    或者:

    UPDATE MyTable 
    SET Val = NULLIF(@Default_Value , Val)
    WHERE id = @id
    

    如果答案是正确的解决方案,请点击“接受答案”并投赞成票。如果您对此答案有其他疑问,请点击“评论”。

    0 个注释 无注释

0 个其他答案

排序依据: 非常有帮助

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。