SQL Server:如果col为空,则追加字符串不起作用

时间:2015-07-02 08:17:53

标签: sql sql-server

我需要以编程方式将一些字符串附加到col1。以下代码仅适用于col1不为空的情况。如果它为空,那么在运行代码后它仍为空。为什么呢?

UPDATE 
    table
SET 
    col1 = col1 + ';somestring'
WHERE 
    col2 = rowID

2 个答案:

答案 0 :(得分:5)

这是因为NULL的任何操作都会产生NULL。您需要使用ISNULL()NULL值“转换”为空字符串:

UPDATE 
    table
SET 
    col1 = ISNULL(col1, '') + ';somestring'
WHERE 
    col2 = rowID

答案 1 :(得分:2)

您有两种方法可以解决此问题。

首先使用ISNULL

DECLARE @var nvarchar(10) -- not initialized (null)

SELECT @var + N'test' -- yields null

-- use ISNULL to fix it
SELECT ISNULL(@var,N'') + N'test' 
GO

第二次如果您有许多此类操作,则会停用NULL_YIELDS_NULL

DECLARE @var nvarchar(10) -- not initialized (null)

-- you can also disactivate this behaviour for this session
-- This way all null concats will be interpreted as an empty string
SET CONCAT_NULL_YIELDS_NULL OFF --disable null yields null for one ore more operations

SELECT @var + N'test'

SET CONCAT_NULL_YIELDS_NULL ON --reenable it, if you don't need it disabled anymore
GO