2010-09-16 96 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