我有一段来自存储过程的t-sql代码,它根据给定的参数执行搜索。我似乎无法理解以下陈述背后的逻辑:
if isnull(@LoginName, '') = ''
select @LoginName = null
这是我的思维方式:isnull正在判断LoginName是否为null,如果是,则它指定''(也是null,对吧?)然后将它与''(null?)进行比较。然后,如果表达式为true - 将null赋给变量LoginName(为什么?它首先已经为null!)。 有人可以把一些光照进我的黑头。我根本就不懂逻辑。谢谢。
答案 0 :(得分:0)
@LoginName是NULL还是'',它强制@LoginName为NULL。
答案 1 :(得分:0)
嗯,这有点傻。应该是:
IF @LoginName = ''
BEGIN
SET@LoginName = null
END
代码试图确保处理NULL和空字符串值,但不需要将空值转换为空字符串以转换回null,只需将空字符串转换为空字符串即可。