我需要以编程方式将一些字符串附加到col1
。以下代码仅适用于col1
不为空的情况。如果它为空,那么在运行代码后它仍为空。为什么呢?
UPDATE
table
SET
col1 = col1 + ';somestring'
WHERE
col2 = rowID
答案 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