Sql server 2008 SQL根据特定条件更新一列
我有一个SQL表,在这个表中有一个位列IsComplete,如果其他列中有数据,则需要设置它 IsComplete最初是由应用程序中的复选框处理的,我希望将责任转移到SQL DB,以处理基于以下内容将IsComplete列设置为true的问题:Sql server 2008 SQL根据特定条件更新一列,sql-server-2008,sql-update,criteria,Sql Server 2008,Sql Update,Criteria,我有一个SQL表,在这个表中有一个位列IsComplete,如果其他列中有数据,则需要设置它 IsComplete最初是由应用程序中的复选框处理的,我希望将责任转移到SQL DB,以处理基于以下内容将IsComplete列设置为true的问题: IsComplete = true if column1 = [something] and column2 = [something] and column3 = [something] IsComplete = false if column1, c
IsComplete = true if column1 = [something] and column2 = [something] and column3 = [something]
IsComplete = false if column1, column2 or column3 is null or = [nothing]
如何完成此操作。您只需进行更新即可
Update tableBlah setComplete = 0
Update tableBlah setComplete = 1 where column1 = [something] and column2 = [something] and column3 = [something]
并在该表上设置触发器,以便在插入时执行相同的操作 用例
SET IsComplete = CASE
WHEN NULLIF(column1,'') IS NULL OR NULLIF(column2,'') is null
or NULLIF(column3,'') is null THEN 0
ELSE 1
END
请在下面回复您的评论,以便插入:
INSERT INTO TABLE1 (IsComplete)
SELECT CASE
WHEN NULLIF(@column1,'') IS NULL OR
NULLIF(@column2,'') is null or
NULLIF(@column3,'') is null THEN 0
ELSE 1
END
我不确定你的问题,我想我遗漏了什么。 无论如何,如果这是我想的,你可以使用Case语句
update T set IsComplete = CASE WHEN column1 = something and column2 = something
and column2 = something THEN 1
WHEN column1 != [Something] OR column2 != [Something] OR column3 != [Something] THEN 0 END
from yourTable T --Your where criteria goes Here, if you need it
这个答案考虑到你的表有3个列,一个列的东西,你会更新完整的,考虑每个行的值
你也可以有一个计算列。 只需创建一个函数来接收3个参数,如果3个参数不为null,则返回True,否则返回False 然后创建列IsCOmplete,并在计算列规范中设置它 在公式中使用dbo.Yourfunctioncolumn1、column2、column3update Table SET IsComplete = ISNULL(DATALENGTH(COALESCE(col1,col2,col3)) % 1) + 1,0);
我们应该做到这一点
[something]是什么,数据库中某个表中的字段?[something]表示除空字符串或空白字符串以外的任何内容,我不确定如何声明easilyperform a select?你能解释一下吗好的,我早就知道了。谢谢大家我没有投你反对票。但是你的答案是不正确的,因为他在第一行说IsComplete在一个包含更多列的表中,而你在一个包含唯一字段的表中插入。另外,您正在更新,不考虑[某些东西],只考虑Null的不同。这可能是因为有一些字段不是空的,而不是[某物]。考虑到这是从应用程序中传递的一个参数。他把这篇文章贴到OP下面的评论中[某物]意味着什么,除了NULL或空白字符串,我不知道如何容易地声明,你的答案也不考虑Calnn= [某事1]。或者第2列=什么?Insert是示例代码,他问我如何为Insert执行该操作,他没有问如何在所有列中插入的问题。根据您对我答案的评论,这将不起作用。如果column1=something2和column2=something2和column3=something3怎么办?