如果您的函数返回一个整数,则结果来自isnull
也将是一个整数。在这种情况下返回值为null
您将隐式转换为 '' 的整数,结果为 0。
尝试这个:
declare @xx int
select isnull(@xx,'')
Result:
-----------
0
如果您首先将函数的返回值转换为varchar
.
declare @xx int
select isnull(cast(@xx as varchar(10)),'')
Result:
----------
.
如果你的函数返回0
代替null
您可以使用nullif
在转换为之前获取空值varchar
.
declare @xx int = 0
select isnull(cast(nullif(@xx, 0) as varchar(10)),'')
Summary:
你需要这个:
Duration = isnull(cast(FunctionA(DateA,DateB) as varchar(10)),'')
or this
Duration = isnull(cast(nullif(FunctionA(DateA,DateB), 0) as varchar(10)),'')