T-SQL if isnull()构造

时间:2013-09-16 18:44:22

标签: sql-server-2008 tsql

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

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

这是我的思维方式:isnull正在判断LoginName是否为null,如果是,则它指定''(也是null,对吧?)然后将它与''(null?)进行比较。然后,如果表达式为true - 将null赋给变量LoginName(为什么?它首先已经为null!)。 有人可以把一些光照进我的黑头。我根本就不懂逻辑。谢谢。

2 个答案:

答案 0 :(得分:0)

@LoginName是NULL还是'',它强制@LoginName为NULL。

答案 1 :(得分:0)

嗯,这有点傻。应该是:

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

代码试图确保处理NULL和空字符串值,但不需要将空值转换为空字符串以转换回null,只需将空字符串转换为空字符串即可。

相关问题