1

SQL Server ManagementStudio2008を使用して次のクエリを実行しようとしています。

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フィールドまでのnotesフィールドのすべてのデータを結合しようとしています。

これはコードの一部にすぎません。

バラバラになったとき:

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

メモフィールドにデータが表示されます。

しかし、クエリを実行すると、clientNewテーブルに{null}値のみが表示されます。

私のクエリは間違っていますか?またはどこかに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 と等しくなります。NULL を防ぐには COALESCE を使用する必要があります。

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 に答える