使用T-SQL,我想执行一条UPDATE语句,该语句仅在定义了相应的变量时才设置列。
下面是我想要实现的一个简单的伪tsql示例:
--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语句根据条件动态设置字段/列?-如果可以,如何设置?
发布于 2010-07-15 14:18:50
The CASE expression
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
...
发布于 2013-11-30 22:53:37
我认为这将是有用的:
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
你喜欢吗?好好享受吧。
https://stackoverflow.com/questions/3252935
复制相似问题