Sqlserver中很多時候需要對數據進行加密、或校驗。自Sqlserver 2000 時代起,網絡上流傳着一個MD5的加密函數,說實在的,很復雜,很負責!
但最重要的是,該函數在sqlserver中的執行效率太低!適應不了大量數據的處理。
我曾想過很多方法試着解決:C語言編寫擴展存儲過程、.NET程序集,雖然最后都可以解決問題,但終歸有些繁瑣,不是正經的原生方式。
Sqlserver2005 都出了這么久了,偶就沒有發現這個hashbytes函數可以構建原生的MD5函數,唉!汗顏!!!!
謹記、謹記、謹記、謹記
代碼如下:
--創建md5函數 CREATE FUNCTION [dbo].[MD5](@src varchar(255) ) RETURNS varchar(255) AS BEGIN DECLARE @md5 varchar(34) SET @md5 = sys.fn_VarBinToHexStr(hashbytes('MD5', @src)); --RETURN SUBSTRING(@md5,11,16) --16位 RETURN SUBSTRING(@md5,3,32) --32位 END GO