2011-10-22 56 views
1

我試圖在MD5 Base64中生成特定字符串的散列值。 是否可以在SQL Server中的查詢中執行此操作?使用SQL Server中的查詢在Base64中散列MD5

我知道在HashBytes(Algo,String)中有一個生成哈希的函數,但是沒有Base64選項。

有嗎?

謝謝!

回答

4
CREATE FUNCTION dbo.Base64Encode 
(
    @bin VARBINARY(MAX) 
) 
RETURNS VARCHAR(MAX) 
AS 
BEGIN 
    return CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'VARCHAR(MAX)') 
END 

SELECT dbo.Base64Encode(HashBytes('MD5', ItemName)) 
FROM tblItems 
+0

嗨馬格努斯,它的工作原理!謝謝! 2個問題,因爲我不熟悉MSSQL: 1)我只需要運行這個創建函數查詢一次,以便該函數將存在於MSSQL數據庫內。但是,我如何從MSSQL Management Studio中找到函數呢? 2)在同一個MSSQL Management Studio中,我使用的所有選擇語句都必須是這樣的: 從中選擇列。

... 我該如何指定table.column ..或者縮短字段? 謝謝! :) – DarenTay

+0

是的,你只需要創建一次,你可以在Management Studio的'Programmability - > Functions - > Scalar-Values Functions'下找到它。如果批量以「使用DbName」開頭,則不必在查詢中指定它。 – Magnus

+0

嗨馬格努斯,我注意到功能出現在'大師'。 1)如何創建一個顯示在我正在使用的特定數據庫中的函數? 2)如果函數在主數據庫中,是否還有其他優點/缺點? 3)即使使用「使用DBname」,我仍然需要指定

在查詢的'from'部分下。這是預期的嗎? 對不起,我是新來的,所以我必須是一個真正的盲鼠標......但我似乎無法找到我能接受的答案承認 – DarenTay