2012-08-29 67 views
1

我試圖運行使用SQL Server Management Studio 2008中SQL查詢:填充只

update Schema.[ClientNew] 
set [Notes] = ([Notes]+ char(10)+(Select [Notes] from Schema.[clientOld] 
where office = 90 and ID = '123456789AM')) where office = 90 and ID= '123456789' 

基本上是試圖將所有數據在我的筆記領域從clientOld在clientnew結合備註字段下面的查詢空值。

這只是代碼的一部分。

當碎裂開來:

Select [Notes] from Schema.[clientOld] where office = 90 and ID = '123456789AM' 

給我的備註字段數據。

但是,當我運行查詢時,只有{null}值出現在clientNew表上。

是我的查詢錯誤?或在某處寫入空值?

請指教,

+0

ClientNew在Notes中有空值bef更新? –

回答

2

如果Schema.[ClientNew]領域[Notes]Null,更新將無法正常工作。

這是因爲你不能Null使用操作+

例如操作:

做到這一點:

select null + 'a' 

,其結果將是null。 所以,如果你的表ClientNew了NULL值,這

([Notes]+ char(10)+(Select [Notes] from Schema.[clientOld] 
where office = 90 and ID = '123456789AM')) 

將返回null

嘗試添加一個空字符串,而不是

(ISNULL([Notes], '') + char(10)+(Select [Notes] from Schema.[clientOld] 
where office = 90 and ID = '123456789AM')) 
+1

是的。空值是問題。我知道這很愚蠢。謝謝 :) – JJunior

0

一個NULL +東西總是等於NULL,你需要使用COALESCE來防止NULL:

UPDATE [Schema].ClientNew 
SET    Server = COALESCE([Schema].ClientNew, '') + COALESCE([Schema].clientOld, '') 
FROM   [Schema].ClientNew INNER JOIN 
         [Schema].clientOld ON [Schema].clientOld.office = [Schema].ClientNew.office AND ID = [Schema].ClientNew.ID 
WHERE  (office = 90) AND (ID = '123456789AM')