2010-08-15 91 views
2

有一个查询:NULL比较

UPDATE MyTable SET nvarchar1 = 'blahblah' 
WHERE Id = '096fe792-7313-416f-b3c8-327f46be73b6' AND nvarchar1 <> 'blablah' 

它不工作,当nvarchar1为NULL。我应该如何改变它以使其工作?

  1. 重要的是我不执行更新,如果价值没有真正改变。
  2. 我不知道列类型。它不仅可以是nvarchar,也可以是ntext,整数或浮点数。

问候,

回答

2
UPDATE MyTable SET nvarchar1 = 'blahblah' 
WHERE Id = '096fe792-7313-416f-b3c8-327f46be73b6' 
AND (nvarchar1 IS NULL 
OR nvarchar1 <> 'blablah') 

你的意思吗?

+0

是的,唯一正确的答案。我忘了IS NULL,因为ISNULL显然不工作。谢谢。 – noober 2010-08-15 21:26:43

+0

为什么ISNULL不起作用? – 2010-08-15 21:28:01

+0

1.由于我不知道列类型(如第2点中引用的那样),我不知道应该使用什么默认值。它是''为nvarchar,0为数字等。我必须有不同的查询,具体取决于列类型。 2.更糟的是,即使类型总是nvarchar,预定义的默认值('')可以与正在设置的值相同。例如,如果您的查询使用空字符串擦除以前的值,则它将是UPDATE MyTable SET nvarchar1 ='' WHERE Id ='096fe792-7313-416f-b3c8-327f46be73b6'AND isnull(nvarchar1,'')<>' ' – noober 2010-08-15 21:39:07

0
UPDATE MyTable SET nvarchar1 = 'blahblah' 
WHERE Id = '096fe792-7313-416f-b3c8-327f46be73b6' AND isnull(nvarchar1,'') <> 'blablah'