0

我有表变量,它的所有列都不能为空(每个都不是 NULL 定义):

DECLARE @SampleTable 
(
   ,SampleColumnID nvarchar(400) NOT NULL PRIMARY KEY
   ,SampleColumnText nvarchar(max) NOT NULL
)

我对这个变量做了一些操作,并用一些文本初始化了“SampleColumnText”。

然后我尝试用其他函数返回的文本替换其中的一部分。发生的情况是该函数在某些情况下返回 NULL,所以我这段代码会产生错误:

REPLACE(SampleColumnText , '{*}', @InitByFunctionText)

这次@InitByFunctionText 为 NULL。

那么,当我只用 NULL 替换部分文本而不是整个文本时,是否会生成正常错误?

4

2 回答 2

2

我最近有类似的事情,以下解决了这个问题:

REPLACE(SampleColumnText , '{*}', ISNULL(@InitByFunctionText, ''))
于 2012-08-06T07:23:27.120 回答
2

这是预期的行为。REPLACE

NULL如果任何一个参数是 则返回NULL

如果要将其替换为空字符串(与 不同NULL,可以使用COALESCE

REPLACE(SampleColumnText , '{*}', COALESCE(@InitByFunctionText,''))
于 2012-08-06T07:23:59.980 回答