2012-07-24 31 views
0

我有一個SQL表,並且在此表內有一個BIT"IsComplete"需要設置,如果其他列中有數據。SQL根據某些標準更新一列

IsComplete最初是由應用程序中的複選框來處理,我想轉移責任到SQL DB處理設置這個「IsComplete」欄目真正基於以下幾點:

IsComplete = true if column1 = [something] and column2 = [something] and column3 = [something] 
IsComplete = false if column1, column2 or column3 is null or = [nothing] 

怎麼辦我完成了這個。

+0

[某件事]是什麼,一個字段在你的數據庫表中的一些? – 2012-07-24 21:36:35

+0

[something]意味着什麼,但NULL或空字符串,我不知道如何輕鬆說 – mattgcon 2012-07-24 21:39:39

回答

0

你也可以有一個計算列。

只要創建一個函數來接收3個paranmeters,並返回True如果3個參數不爲空,否則返回False。

然後創建柱IsCOmplete,並將其設置在計算機的列規格

在式使用dbo.Yourfunction(列1,列2,欄3)

+0

爲什麼twi回答?請編輯你的第一個答案 – 2012-07-24 21:50:35

+0

Cuz im給他2個選項? – 2012-07-24 23:01:19

+0

你可以把它放在同一個 – 2012-07-24 23:14:07

0

你可以做一個更新

Update tableBlah setComplete = 0 

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

並擁有該表的觸發器插入時做的一樣。

-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 
+0

好吧,同樣適用於插入語句以及? – mattgcon 2012-07-24 21:41:05

+0

是做'INSERT INTO SELECT'而不是'SET/UPDATE' – 2012-07-24 21:41:42

+0

執行select?你能解釋一下嗎 – mattgcon 2012-07-24 21:43:33

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考慮對各行的值

+0

這將無法基於您對我的回答評論如果'column1 = something2和column2 = something2和column3 = something3'? – 2012-07-24 23:13:45

+0

你說得對,先生 – 2012-07-24 23:18:14