sql中的if构造
我不擅长t-sql,所以我需要帮助 我有我自己写的代码,但我不知道我想怎么写(对不起,英语)sql中的if构造,sql,tsql,Sql,Tsql,我不擅长t-sql,所以我需要帮助 我有我自己写的代码,但我不知道我想怎么写(对不起,英语) 我该怎么做呢?您不需要临时表 declare @questionid int set @questionid = 22 declare @providerid int set @providerid = 189 declare @closed datetime select @closed = [closed] from [Data].[dbo].[Question] where [question
我该怎么做呢?您不需要临时表
declare @questionid int
set @questionid = 22
declare @providerid int
set @providerid = 189
declare @closed datetime
select @closed = [closed] from [Data].[dbo].[Question] where [questionid] = @questionid
-- and here, if [closed] is null I must write in the question table current date GETDATE()
IF @closed IS NULL
UPDATE [Data].[dbo].[Question] SET [closed] = GETDATE() WHERE [questionid] = @questionid and [providerid] = @providerid
ELSE
-- or, if [closed] is not null I must write there null
UPDATE [Data].[dbo].[Question] SET [closed] = null WHERE [questionid] = @questionid and [providerid] = @providerid
我必须说,我不明白你试图实现的逻辑…当你可以轻松完成任务时,利用
案例
UPDATE [Data].[dbo].[Question]
SET [closed] = CASE
WHEN [closed] is null THEN GetDate()
ELSE null
END
WHERE [questionid] = @questionid
and [providerid] = @providerid
我还必须做反向操作。Null到datetime,datetime到Null。AlejoBrz提供了工作代码。最好是在紧凑的情况下使用case…并节省额外的行数,使代码清晰…谢谢,这就是我需要的@闭合变量不是位,而是日期时间。如果用户点击关闭按钮-问题将关闭,如果用户点击同一按钮(另一个文本为“打开”)-问题将打开。谢谢。我编辑了修复变量声明的答案。只是想让您知道,如果if中有多个句子,则必须使用BEGIN和END将它们括起来。同样,在这种情况下,可以使用一个更新而不需要使用IF,正如@PranayRana所说,但是当你问如何使用IF来了解它的用法时,我回答了这个问题。
UPDATE [Data].[dbo].[Question]
SET [closed] = CASE
WHEN [closed] is null THEN GetDate()
ELSE null
END
WHERE [questionid] = @questionid
and [providerid] = @providerid