0

我有一个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]

我该如何做到这一点。

4

5 回答 5

0

你可以做一个更新

Update tableBlah setComplete = 0

Update tableBlah setComplete = 1 where column1 = [something] and column2 = [something] and column3 = [something]

并在该表上设置一个触发器以在插入时执行相同操作。

于 2012-07-24T21:39:45.323 回答
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 列和一个 column Something,您将IsComplete根据每行的值进行更新

于 2012-07-24T21:42:00.543 回答
0

您还可以为此设置一个计算列。

只需创建一个函数来接收 3 个参数,如果 3 个参数不为空则返回 True,否则返回 False。

然后创建列 IsCOmplete ,并在 Computed Column Specification 中设置它

在公式中使用 dbo.Yourfunction(column1,column2,column3)

于 2012-07-24T21:47:15.083 回答
0
update Table SET IsComplete = ISNULL(DATALENGTH(COALESCE(col1,col2,col3)) % 1) + 1,0);

应该做的伎俩。

什么是聚结

什么是空

什么是数据长度

什么是 %

于 2012-07-24T22:20:09.080 回答
-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
于 2012-07-24T21:40:30.970 回答