简体   繁体   English

SQL 更新查询中的 IF Else 语句

[英]IF Else statements in SQL Update Query

I want to write if else in SQL Server Update Query.我想在 SQL Server 更新查询中写入 if else。

在此处输入图片说明

UPDATE [dbo].[TempTable]
SET [Level1] = CASE WHEN A = -1 THEN 0 ELSE A END
   ,[Level2] = CASE WHEN A = -1 THEN 0 ELSE A END;

You need to use CASE in such scenarios.在这种情况下,您需要使用CASE Try the above query..试试上面的查询..

If you insist on using IF , you can try the following:如果您坚持使用IF ,您可以尝试以下操作:

IF如果

IF A = -1 BEGIN
    UPDATE [dbo].[TempTable]
    SET [Level1] = 0
       ,[Level2] = 0
END
ELSE BEGIN
    UPDATE [dbo].[TempTable]
    SET [Level1] = A
       ,[Level2] = A
END

IIF国际金融研究所

UPDATE [dbo].[TempTable]
SET [Level1] = IIF(A = -1, 0, A)
   ,[Level2] = IIF(A = -1, 0, A)

You can use CASE statement, and If "A" is one of the column in your dbo.TempTable您可以使用 CASE 语句,如果“A”是 dbo.TempTable 中的列之一

DECLARE @Table TABLE(A INT,Level1 INT,Level2 INT)

INSERT @Table
SELECT -1, NULL, NULL UNION ALL
SELECT 1,NULL,NULL

UPDATE t SET 
    Level1 = CASE WHEN A = -1 THEN 0 ELSE A END,
    Level2 = CASE WHEN A = -1 THEN 0 ELSE A END
FROM @Table t

SELECT * FROM @Table

-- Result - 结果

A   Level1  Level2
-1  0   0
1   1   1

With case or IIF ;)带案例或 IIF ;)

UPDATE [dbo].[TempTable]
SET [Level1] = IIF(A = -1 , 0 , A),  [Level2] = IIF(A = -1 , 0 , A)

This will work :这将工作

UPDATE [dbo].[TempTable]
SET [Level1] = IIF(A = -1, 0, A), [Level2] = IIF(A = -1, 0, A);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM