【问题标题】:Hash MD5 in Base64 using Queries in SQL Server使用 SQL Server 中的查询在 Base64 中散列 MD5
【发布时间】:2011-12-13 02:54:34
【问题描述】:

我正在尝试在 MD5 Base64 中生成特定字符串的哈希值。 是否可以在 SQL Server 中的查询中执行此操作?

我知道HashBytes(Algo,String) 中有一个生成哈希的函数,但是没有 Base64 选项。

有吗?

谢谢!

【问题讨论】:

标签: sql sql-server hash base64 md5


【解决方案1】:
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

【讨论】:

  • 嗨,马格努斯,它有效!谢谢!不过,由于我对 MSSQL 不熟悉,因此有 2 个问题:1)我只需要运行一次此创建函数查询,以便该函数将存在于 MSSQL 数据库中。但是如何从 MSSQL Management Studio 中找到该功能? 2) 从同一个 MSSQL Management Studio 中,我使用的所有选择语句都必须是这样的:从 ...... 中选择列...我如何指定 table.column ..或缩短领域?谢谢!!! :)
  • 是的,您只需创建一次,您可以在 Management Studio 中的 Programmability --> Functions --> Scalar-Values Functions 下找到它。如果批处理以 Use DbName 开头,则不必在查询中指定它。
  • 嗨 Magnus,我注意到该函数出现在“Master”中。 1) 如何创建一个出现在我正在处理的特定数据库中的函数? 2)如果该功能是否在主数据库中,是否有任何额外的优势/劣势? 3) 即使使用“使用 DBname”,我仍然需要在查询的“来自”部分下指定 .
  • 。这是预期的吗?抱歉,我是 SO 新手,在这里我一定是个瞎老鼠……但我似乎找不到在哪里可以接受答案以确认
  • 1.在 crate 函数语句之前使用 USE DbName 语句。 2.不要放在master里面。 3. 如果schema是dbo,只需要指定Schema.Function而不是Schema.Table。
  • 我想我需要更多地玩弄它才能弄清楚谢谢!
猜你喜欢
相关资源
最近更新 更多
热门标签