ALTER proc [dbo].[updateSignOutMem]
@ID nvarchar(50), @signOut nvarchar(50),@date nvarchar(50)
as
update [DateTable]
set SignOut = @signOut
where ID = @ID AND [Date] = @date and SignOut = null ;
答案 0 :(得分:3)
解决方案:将SignOut = null
替换为SignOut IS NULL
。
为什么:与NULL的比较始终返回NULL,并且将计算结果为NULL的WHERE子句视为FALSE。例如,SELECT * FROM myTable WHERE NULL = NULL
将返回零记录而不是整个表。
解释:NULL
值是“未知”值,因此比较两个未知值的结果也是未知的。这个三值逻辑(真,假,未知)的描述可以be found on Wikipedia。
PS :SQL Server提供的much more data types不仅仅是nvarchar(50)。使用它们! : - )
答案 1 :(得分:1)
尝试写作
SignOut IS null