首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在T-SQL UPDATE语句中实现IF条件

在T-SQL UPDATE语句中实现IF条件
EN

Stack Overflow用户
提问于 2010-07-15 14:15:33
回答 2查看 65.7K关注 0票数 20

使用T-SQL,我想执行一条UPDATE语句,该语句仅在定义了相应的变量时才设置列。

下面是我想要实现的一个简单的伪tsql示例:

代码语言:javascript
复制
--Declaring vars
@ID int,
@Name nvarchar(20),
@Password nvarchar(10)

--Run the update
UPDATE User
SET
IF LEN(@NAME) > 0
  Name = @Name,
IF LEN(@Password) > 0
  Password = @Password

从我通过阅读IF条件在T-SQL中的工作原理可以看出,为了实现与上述伪代码相同的结果,我必须为每个IF条件创建一条UPDATE语句-这是我试图避免的。

是否可以仅使用一条UPDATE语句根据条件动态设置字段/列?-如果可以,如何设置?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-15 14:18:50

The CASE expression

代码语言:javascript
复制
UPDATE User
SET
    Name = CASE WHEN LEN(@NAME) > 0 THEN @Name ELSE Name END,
    Password = CASE WHEN LEN(@Password) > 0 THEN @Password ELSE Password END
WHERE
   ...
票数 49
EN

Stack Overflow用户

发布于 2013-11-30 22:53:37

我认为这将是有用的:

代码语言:javascript
复制
Create PROCEDURE [dbo].[CodeUpdate] 
(
    @Id int, 
    @Name nVarChar(150)=null, 
    @IsActive bit =null, 
    @IsSystem bit=null
) AS 
BEGIN 
    UPDATE [dbo].[Code] SET 
        [Name] = CASE WHEN @Name is null THEN [Name] ELSE @Name END,
        [IsActive] = CASE WHEN @IsActive is null THEN [IsActive] ELSE @IsActive END,
        [IsSystem] = CASE WHEN @IsSystem is null THEN [IsSystem] ELSE @IsSystem END
    WHERE  ID = @Id
End

你喜欢吗?好好享受吧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3252935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档