我正在尝试使用SQL Server Management Studio 2008运行以下查询。
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的notes字段中的所有数据组合到clientnew中的notes字段。
这只是代码的一部分。
分手时:
Select [Notes] from Schema.[clientOld] where office = 90 and ID = '123456789AM'
在笔记字段中为我提供数据。
但是当我运行查询时,clientNew表上只显示{null}值。
我的查询错了?或者在某处写空值?
请指教,
答案 0 :(得分:2)
如果Schema.[ClientNew]
在Null
字段中获得[Notes]
,则您的更新将无效。
这是因为您无法使用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 :(得分: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')