2

我现在正在使用 SQL Server 2008 中的函数,我正在尝试编写类似的东西

   create function [dbo].[GetDaysStringForPivot](@date varchar(10))
   returns varchar(7000)
   as
  begin
declare @date_pivot varchar(3000)
declare @week varchar(10)
    set @week = 'week 15'
    set @date_pivot = @date_pivot + @week + @date

  return @date_pivot

当我调用该函数时,返回值始终为空。通过调试我发现@date_pivot 没有分配任何东西。奇怪的是,如果我在这里添加一个语句,它可以正常分配

  set @date_pivot = ''
  set @date_pivot = @date_pivot + @week + @date

有谁知道为什么?

感谢您的通知

4

2 回答 2

1

这是因为您要连接到一个空值,您需要分配@date_pivot一些东西或者您可以SET CONCAT_NULL_YIELDS_NULL OFF(您不能在函数中这样做)。

When you concatenate null values, either the concat null yields null setting of 
sp_dboption or SET CONCAT_NULL_YIELDS_NULL determines the behavior when one expression 
is NULL. With either concat null yields null or SET CONCAT_NULL_YIELDS_NULL enabled ON,
'string' + NULL returns NULL. If either concat null yields null or 
SET CONCAT_NULL_YIELDS_NULL is disabled, the result is 'string'.
于 2013-03-29T09:35:10.420 回答
0

用 NULL 连接值始终为 NULL。

解决方法:

declare @date_pivot varchar(3000) = ''

或者

set @date_pivot = @week + ISNULL(@date, '')
于 2013-03-29T10:12:03.080 回答