Sql server sql server中的空值附加字符串
我有一个问题Sql server sql server中的空值附加字符串,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个问题 update quotestable set quotestags= quotestags +', Panchatantra' where quotesid=1374 这仅在QuoteStats不为null时有效。如果为空,则不会更新。 解决方法是什么?您可以使用: update quotestable set quotestags= COALESCE(quotestags, '') +', Panchatantra' where quotesid=1374 这将使用要连接的空
update quotestable set quotestags= quotestags +', Panchatantra' where quotesid=1374
这仅在QuoteStats不为null时有效。如果为空,则不会更新。
解决方法是什么?您可以使用:
update quotestable set quotestags= COALESCE(quotestags, '') +', Panchatantra' where quotesid=1374
这将使用要连接的空字符串替换空值
顺便说一下,如果quotestags
为null,则仍会执行更新,但null+[value]=null
,因此效果与更新前的情况相同 您可以使用:
update quotestable set quotestags= COALESCE(quotestags, '') +', Panchatantra' where quotesid=1374
这将使用要连接的空字符串替换空值
顺便说一下,如果
quotestags
为null,则仍会执行更新,但null+[value]=null
,因此效果与更新前的情况相同 我认为这是一个更好的解决方案:
UPDATE quotestable
SET quotestags = CASE
WHEN quotestags IS NULL
THEN 'Panchatantra'
ELSE quotestags + ', Panchatantra'
END
WHERE quotesid = 1374
因为当quotestags为null时,您不想附加那些“,”。我认为这是一个更好的解决方案:
UPDATE quotestable
SET quotestags = CASE
WHEN quotestags IS NULL
THEN 'Panchatantra'
ELSE quotestags + ', Panchatantra'
END
WHERE quotesid = 1374
因为当quotestags为null时,您不想附加那些“,”。我更喜欢这种情况,但也适用。@Richard,只是出于兴趣,为什么您更喜欢
isnull
?我总是更喜欢coalesce
,因为它是ANSI,因此更便于携带。习惯是最重要的,加上它的名字更清楚(ANSI从来不是我工作过的系统的问题:端口能力从来不是一个要求)。我更喜欢这种情况,但也很有效。@Richard,出于兴趣,你为什么更喜欢isnull
?我总是更喜欢coalesce
,因为它是ANSI,因此更具可移植性。主要是习惯,再加上它的名称更清晰(ANSI从来不是我工作过的系统的问题:端口能力从来都不是一个要求)。