我正在使用sql server 2014。假设我有一张table叫 T1
有两列, IdNumber
以及 Notes
. 表 T1
包含大约300000条记录。
这个 Notes
列是一个自由文本列,表示用户在其中输入了自由文本。某些记录此列为空(未输入文本)。
我现在有一份 IdNumbers
在这里我需要添加这个特定的文本“(toc)”在注解栏的 T1
,最理想的是在任何文本的结尾。我创建了一个名为 tempID
它包含所有这些ID号的列表。
这是我的table T1
外观(摘录):
IdNumber Notes
--------------------------------------------------------------------
101 Guest does not like beer
154 wedding anniversary - to prepare a cake - 03052020
160
``` `IdNumber = 160` 有空白/空 `Notes` 列。
以下是我想要实现的目标(假设“(toc)”需要添加到这3个idNumber中):
IdNumber Notes
101 Guest does not like beer (TOC)
154 wedding anniversary - to prepare a cake - 03052020 (TOC)
160 (TOC)
我怎么能做到这一点(我有一个大约1500个数字的列表)?
这就是我的sql查询所遇到的问题:
UPDATE T1
INSERT INTO [Notes]
VALUE ('(TOC)') ----stuck here!
WHERE [IdNumber] in (Select [IdNumber] from [tempID]
我认为应该采取不同的做法,因为我上面的查询只会覆盖 `Notes` 带“(toc)”的列。
3条答案
按热度按时间i2byvkas1#
你只需要简单地加上
(TOC)
请注意Notes
是NULL
,您需要进行一些额外的处理:与
ISNULL()
接线员,你转弯NULL
转换为空字符串,然后可以与(TOC)
字符串。如果忽略这个,那么它就不起作用了,因为串联NULL
任何其他的都会导致NULL
csbfibhn2#
事实上,
concat()
做你想做的事——忽略NULL
价值观:唯一的警告是你似乎想要
ltrim()
删除前导空格时notes
是NULL
:这将删除
NULL
价值观——以及任何NULL
s在notes
.你可以这样做
COALESCE()
以及+
也:56lgkhnf3#
试试这个: