2015-02-10 54 views
2

我正在嘗試使用帶有MD5算法的HASHBYTES。但得到取決於如何將數據即通過不同的結果,在SQL Server中爲HASHBYTES()方法獲取不同的結果

  1. 如果使用可變SELECT HASHBYTES('MD5', @Var)通過示出了結果0xBEC062C01D70F0D2FC15F2E43EE3A66B

  2. 如果通過照片直接SELECT HASHBYTES('MD5', 'asd123')示出了結果0xBFD59291E825B5F2BBF1EB76569F8FE7

我使用INSERT插入數據,但是當我嘗試使用我的存儲過程進行檢索時,沒有記錄顯示。

有什麼我失蹤了嗎?

回答

2

它與字符編碼有關。您的@VarNVARCHAR,但字符串文字爲VARCHAR,因爲它沒有以N作爲前綴。

SELECT HASHBYTES('MD5', 'asd123') AS [VARCHAR], 
     HASHBYTES('MD5', N'asd123') AS [NVARCHAR] 

VARCHAR        NVARCHAR 
---------------------------------- ---------------------------------- 
0xBFD59291E825B5F2BBF1EB76569F8FE7 0xBEC062C01D70F0D2FC15F2E43EE3A66B 

對於完全詳細的說明,請參閱我的答案在這裏:TSQL md5 hash different to C# .NET md5

+1

謝謝!這真的解決了我的問題... – 2015-02-10 18:11:37