我遇到了 nullif () 的问题。请看以下三种情况:
场景1:
declare @val money
declare @pctg money
select @val = 0.00
select @pctg = nullif(@val,'')
select @pctg
go
在第一种情况下,如果我将 0 传递给变量 @val,则 @pctg 值计算为 NULL。@pctg 变量进一步用于其他计算,结果为空。
为了解决方案 1 中的问题,我实施了方案 2:
declare @val money
declare @pctg money
select @val = 0.00
select @pctg = nullif(convert(varchar,@val),'')
select @pctg
go
这现在将返回预期的 0 并且计算也很好。但现在我又用空字符串执行了一项测试,如场景 3 中所述:
declare @val money
declare @pctg money
select @val = ''
select @pctg = nullif(CONVERT(varchar,@val),'')
select @pctg
go
在这里,我期望返回空值,但它将返回 0 并且我的测试失败,因为在空字符串上我需要最终值为空。
有人可以帮忙,因为场景 2 的解决方案在场景 3 中失败了。
我需要一种解决方案来处理所有这三种情况。