2012-08-29 65 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')