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从来不是我工作过的系统的问题:端口能力从来都不是一个要求)。