-1

我有一段来自存储过程的 t-sql 代码,它根据给定的参数执行搜索。我似乎无法理解以下语句背后的逻辑:

if isnull(@LoginName, '') = '' 
    select @LoginName = null

这是我的想法:isnull 正在检查 LoginName 是否为 null,如果是,则分配 ' '(这也是 null,对吗?),然后将其与 ' '(null?)进行比较。然后,如果表达式为真 - 将 null 分配给变量 LoginName(为什么?它一开始就已经为 null!)。有人可以给我黑暗的脑袋带来一些启发吗?我只是不明白其中的逻辑。谢谢你。

4

2 回答 2

0

嗯,这有点傻。应该:

IF @LoginName = ''
BEGIN 
    SET@LoginName = null
END

该代码试图确保 NULL 和空字符串值都得到处理,但无需将空字符串转换为空字符串即可转换回空字符串,如果空字符串以这种方式出现,则只需转换空字符串即可。

于 2013-09-16T19:04:25.900 回答
0

无论@LoginName 是NULL 还是'',它都会强制@LoginName 为NULL。

于 2013-09-16T19:00:14.183 回答