2010-09-16 98 views
0

我有一個表中有幾列允許NULL。我將如何去編寫一個SQL查詢,這將允許我在更新中跳過該列,如果該值爲「空」。我應該使用布爾標誌讓查詢知道更新該值嗎?我在類似這樣的SELECT中做類似的事情跳過使用空值更新SQL行?

SELECT * FROM table WHERE (@boolFlag = 1 OR col1 = @col1Val) 

但是試圖爲更新做到這一點已被證明是徒勞的練習。理想情況下,如果真的,我可以說跳過這個值,否則更新我的20列。現在我無法傳遞DBNull.Value,所以我不得不插入轉換爲空格的「」(例如,我的nvarchar(50)有50個空格)。

我在VB.NET中使用SQL Server DB/Table和DataSet,在VS2k8中構建我的查詢(如果有的話)。

+0

你能不能給我們的數據的樣本集前後所需的更新? – 2010-09-16 17:50:57

回答

1

你可以這樣做:

update MyTable 
set MyColumn = case when @MyColumnValue = '' then null else @MyColumnValue end 

的縮寫形式上面會:

update MyTable 
set MyColumn = case when @MyColumnValue <> '' then @MyColumnValue end 
+0

我必須嘗試一下。感謝你及時的答覆。 – Crag 2010-09-16 17:49:04

+0

好的這個解決方案被證明是正確的答案。在創建SQL查詢之後,我唯一需要做的就是去VS2k8中設置參數(通常,用@表示它們會爲我創建它們,但由於某些原因,它們不能在case塊中找到)。 – Crag 2010-09-16 23:43:05