我有一个SQL
表,如果其他列中包含数据,则需要在此表中添加BIT
列"IsComplete"
。
IsComplete
最初由应用程序中的复选框处理,我想将责任转移到SQL DB
以处理将此“IsComplete
”列设置为true,具体取决于以下内容:
IsComplete = true if column1 = [something] and column2 = [something] and column3 = [something]
IsComplete = false if column1, column2 or column3 is null or = [nothing]
我如何做到这一点。
答案 0 :(得分:0)
您可以执行更新
Update tableBlah setComplete = 0
Update tableBlah setComplete = 1 where column1 = [something] and column2 = [something] and column3 = [something]
在插入时,在该表上有一个触发器来执行相同的操作。
答案 1 :(得分:0)
我不确定你的问题,我想我错过了什么。 无论如何,如果这是我的想法,你可以使用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
此答案认为yourTable
有3列,列Something
,考虑到每行的值,您会更新IsComplete
答案 2 :(得分:0)
你也可以有一个计算列。
只需创建一个函数来接收3个参数,如果3个参数不为空,则返回True,否则返回False。
然后创建列IsCOmplete,并将其设置在Computed Column Specification
中在公式中使用dbo.Yourfunction(column1,column2,column3)
答案 3 :(得分:0)
update Table SET IsComplete = ISNULL(DATALENGTH(COALESCE(col1,col2,col3)) % 1) + 1,0);
应该做的伎俩。
答案 4 :(得分:-1)
用例
SET IsComplete = CASE
WHEN NULLIF(column1,'') IS NULL OR NULLIF(column2,'') is null
or NULLIF(column3,'') is null THEN 0
ELSE 1
END
回答下面对INSERT的评论:
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