2011-10-06 93 views
1

我有一個tableA有50列。其中5個不是NULL,其他45個可以是NULL。 現在。還有第51列的狀態。SQL Server2008:查找空記錄

當col6-col50爲空時,我想在狀態 中將該記錄標記爲「失敗」。

col1-col5總是被填充。但可以說從col6-col50都是空值,然後將該記錄標記爲狀態失敗。

好吧我知道冗長的方式。

update .. 
... 
where (col6 is null and col7 is null and.....) 

是否有其他可能的更短,更有效的方法? 感謝

+0

我想你的答案將是否定的。 –

+0

這正是我的想法。 –

+0

「50列... 45可以是NULL ...我想標記記錄...我知道冗長的方式......」 - 如果您正在查找[SQL DML](http://en.wikipedia .org/wiki/Data_Manipulation_Language)編寫困難或痛苦,那麼你應該想要改變你的[SQL DDL](http://en.wikipedia.org/wiki/Data_Definition_Language)。 – onedaywhen

回答

1

也不遑多讓,但

update .. 
... 
where COALESCE(
    col6, 
    col7, 
    ...) IS NULL 
+0

COALESCE比「IS NULL」更有效嗎? –

+2

應該非常接近,如果不相同的話。 (我認爲維護效率更高)但是COALESCE有一個很大的缺點:字段必須是相同的數據類型。 –

+0

那就是我想出來的。現在將所有代碼切換爲「IS NULL」。不管怎麼說,多謝拉 –