2009-12-10 32 views
1

即時做健身房軟件。我有一個簽名登出system.when成員登錄這個數據放在一個表中留下簽名colomn empty.then當成員簽出簽出單元updated.up在這裏沒有問題。但如果成員簽入和簽出兩次,我不希望第一次的簽名時間發生變化。我只希望更新空單元格或登錄時間最長。我有以下存儲過程沒有錯誤,但當運行沒有發生簽名單元格!更新空單元格 - 此存儲過程不起作用 - 爲什麼?

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 ; 

回答

3

解決方案:與SignOut IS NULL更換SignOut = null

爲什麼:與NULL的比較總是返回NULL,並且將計算爲NULL的WHERE子句視爲FALSE。例如SELECT * FROM myTable WHERE NULL = NULL將返回零記錄而不是整個表格。

說明:A NULL值是「未知」值,因此比較兩個未知值的結果也是未知的。這個三值邏輯(真,假,未知)的描述可以是be found on Wikipedia


PS:SQL Server提供much more data types不僅僅是爲nvarchar(50)。使用它們! :-)

1

試着寫

SignOut IS null