1

我正在尝试使用 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合并到clientnew中的notes字段。

这只是代码的一部分。

分开时:

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

给我备注字段中的数据。

但是当我运行查询时,clientNew 表上只出现 {null} 值。

我的查询错了吗??或在某处写空值?

请指教,

4

2 回答 2

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'))
于 2012-08-29T17:00:22.720 回答
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')
于 2012-08-29T17:13:17.173 回答