我有一個使用案例,其中我必須從passwordhistory表中獲取最後五個密碼,並且在檢索五個記錄之後,有兩列第一個md5加密,第二個是散列,然後我有將這些列與新密碼進行比較,將它們從md5和哈希函數中移出後,如果發現任何記錄,則返回true,否則返回false。如何使用以下用例在SQL中獲取記錄
DECLARE @UserID INT = 6
DECLARE @Password NVARCHAR(200)='admin1952'
SELECT *
FROM (SELECT TOP 5
ChangedPassword AS ChangedPassword ,
PasswordChangeHistory.Password_Hash AS Password_Hash
FROM PasswordChangeHistory WITH (NOLOCK)
INNER JOIN [User] U WITH (NOLOCK) ON PasswordChangeHistory.UserID = U.Id
WHERE PasswordChangeHistory.UserID = @UserID
) AS result
WHERE PasswordChangeHistory.ChangedPassword = dbo.Encrypt_MD5(@Password)
什麼與選擇頂部(5)?你知道如果返回任何行,返回的最後一行將被分配給changedpassword? @密碼永遠不會分配一個值,它會傳遞給encrypt_md5?我們是否缺少一些代碼? –
你目前的嘗試有什麼問題? –
它不返回真/假。 – xQbert