2010-08-15 89 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'